求教各位大虾:关于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();