CString string和char*之间的相互转换
string CString char之间的相互转换与项目工程字符集的设置相关
字符集分为 Unicode字符集 和 多字节字符集
其中 VS2005下默认为Unicode字符集 VC6.0默认为多字节字符集
VS2005下字符集设置在项目->属性->配置属性->字符集目录下
1.CString与char*之间的转换
a. Unicode字符集下的转换
//CString -> char*
CSting strCS="Hellp World!";
char *strC;
USES_CONVERSION;
strC=T2A(strCS);
PS:strC应该开辟了新内存,strCS值改变时strC的值不变,是否安全应再考虑
//char* -> CString
char* strC;
CString strCS;
USES_CONVERSION;
strCS=A2T(strC);
b. 多字节字符集下的转换
//CString -> char*
CSting strCS="Hellp World!";
char *strC;
strC=strCS.GetBuffer(strCS.GetLength());
PS:strCS值改变时strC的值改变,当strCS修改后的字符串长度大于修改前时,strC的值会出错
//char* -> CString
char* strC;
CString strCS;
strCS=strC;
2. String与CString之间的转换
a. Unicode字符集下的转换
//CString -> string
CSting strCS="Hellp World!";
string strS;
USES_CONVERSION;
strS=T2A(strCS);
//string -> CString
string strS("Hellp World!");
CString strCS;
strCS=strS.c_str();
PS:strS值改变时strCS的值不变
b. 多字符集下转换
//CString -> string
CSting strCS="Hellp World!";
string strS;
strS=strCS.GetBuffer(0);
PS:strCS值改变时strS的值不变
//string -> CString
string strS("Hellp World!");
CString strCS;
strCS=strS.c_str();
//或采用如下方式
strCS.Format("%s",strS.c_str());
3. string和char*之间的转换
在单字符集和多字符集下string和char*之间的转换没有区别
//string -> char*
string strS("Hellp World!");
const char* strC=strS.c_str();
PS:未给strC开辟内存,只将字符串的指针临时赋给了strC,因此当strS值改变时strC的值会改变
char strC[100];
strcpy(strC,strS.c_str());
PS:strS值改变时strC的值不会改变
//char* -> string
char* strC;
string strS(strC);
浙公网安备 33010602011771号