char a1[10]; 是一个字符数组,有10个字节的空间。对于a1来说,你可以把它当成一个char*指针来用。但是这个指针是const的,不能将它指向其他地方。经常用这样的数组来保存一个字符串。
char *a2; 是一个char*指针。你可以将它指向其他的char型变量,也可以指向一个char数组,比如a2 = a1;但是注意a2自己没有内存空间。如果需要修改a2所指向的变量的内容时,就要留意。
string a; string是一个类,是属于c++标准的。也就是说,它是c++带的类,所以不管到vc,还是bcb,还是linux下什么编译器,只要符合c++标准,就可以使用这个类。它有自己的空间存储字符串。
AnsiString a; 也是一个类,是vcl,或者说bcb,提供的一个类。由于bcb里的其他类和一些其他函数大量使用了这种类型,所以在bcb下编程,我们经常使用这种字符串。它有自己的空间存储字符串。
String是AnsiString的别名(看BCB开发手册写的)
-----------------------------------------------------------------------------------------------------------------------
AnsiString -> char AnsiString.c_str();
char -> AnsiString AnsiString = AnsiString(char);
BSTR -> char* char* char1=AnsiString(bstr).c_str();
wchar_t -> AnsiString AnsiString(wchar_t)
AnsiString -> wchart AnsiString.WideChar();
char -> WideString char *s="adsfdsf";
wchar *p=Widetring(s).BSTR();
WideString -> char wchar_t *p=L"sdsfdfsf";
char *s=AnsiString(p).c_str();
char * c -> wchar_t * cc AnsiString con = c;
cc = con.WideChar( cc , con.WideCharBufSize );
wchar_t * c -> char * cc AnsiString con = c;
cc = con.c_str();
WideString -> wchar_t WideString a = L"abc";
wchar_t *b = new wchar_t[4];
wcscpy(b, a); AnsiString=AnsiString(b);
WideString ws;
// ws = ***;
AnsiString s = ws;
没有评论:
发表评论