首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

求教各位:关于char * 和AnsiString

2012-03-01 
求教各位大虾:关于char * 和AnsiString小弟刚开始学bcb,很多问题不懂。再次请教各位大侠一个问题:AnsiStrin

求教各位大虾:关于char * 和AnsiString
小弟刚开始学bcb,很多问题不懂。再次请教各位大侠一个问题:
AnsiString tmpStr;
char *tmpChar;
tmpChar=tmpStr;
我是这样定义的,可是变异的时候老报错,AnsiString 和char的类型问题。求教!!


[解决办法]

C/C++ code
AnsiString tmpStr;char *tmpChar=new char[500];strcpy(tmpChar,tmpStr.c_str());delete tmpChar;
[解决办法]
char是字符型变量,AnsiString是个类! 

他们可以互相转换: 

char *buf= "123 "; 
AnsiString s= "321 "; 


AnsiString s1 = AnsiString(buf);//s1存放了 "321 " 
AnsiString s2 = s + s1;//s2存放了 "321123 " 

char *p = s2.c_str();//p指向的内存区是 "321123 " 
char bf[100]; 
strcpy(bf,s2.c_str(),s2.Length());//现在COPY到bf里 


[解决办法]
string AnsiString char*的区别(C++builder)2008-10-04 11:48String是Pascal的类型原型,因为C++中没有字符串数据类型的,因此使用char*来存储,char*必须是以‘/0'结尾的,否则不能按照C++的“字符串”来处理 

AnsiString是为了兼容VCL中Object Pascal而写的一个类,其实这个类的内核处理还是ObjectPascal中的代码,AnsiString是自动分配内存的,并且是一个纯C++类, 和其它VCL类不一样,当声明一个AnsiString 的时候AnsiString本身只有一个指向另外内存的指针,其指向的内存才是真正存储字符串的位置,c_str()就是获取这个字符串地址的函数,但是 这个内存地址会根据AnsiString对象大小的改变而改变,就是说这个c_str()每一个返回的有可能不一样。 

String在C++ Builder中和AnsiString是一样的,只是为了兼容Pascal中的String类型而作的typedefine而已。 

string是STL中字符串的处理类。

给char的赋值用strcpy();
 

热点排行