在每次用到这些字符串转换的时候,总是记得不是很清楚,查找这些资料也总是浪费了很多时间,在此总结一下,方便以后使用。
准备工作:
(1) 先将工程的字符集设置为多字节,否则会出现在字符拷贝时结尾为乱码。举个例子,
CString pathStr("abc");
char path[200];
strcpy_s(path, 200, (LPSTR)(LPCTSTR)pathStr);
将字符集设置为: Unicode 字符集 时, 运行结果为:
将字符集设置为: 使用多字节字符集 时, 运行结果为:
设置方法为:选择项目->项目属性(或直接按alt+F7)->配置属性->常规
参考文档:http://blog.163.com/ming__nan/blog/static/6783288200991111281852/
1. 其他类型转 CString
转为 CString 类型比较简单,差不多一个Format() 函数就可搞定其它类型转换为 CString 类型。
(1) String 转 CString
CString.format("%s",string.c_str()); 举个例子:
CString pathStr("abc");
std::stringtestStr("kkk");
pathStr.Format("%s",testStr.c_str());
运行结果为:
例子2:
CString cStr("abc");
std::string testStr("kkk");
cStr = testStr.c_str();
testStr.assign("aaa"); // string 的变化不会影响 CString
运行结果为:
(2) char* 转 CString
CString.format("%s", char*); 举个例子:
CString cStr("abc");
char *pChar = "bbb";
cStr.Format("%s", pChar);
运行结果为:
(3) char[] 转 CString
CString.format("%s", char[]); 举个例子:
CString cStr("abc");
char charArray[200] = "ccc";
cStr.Format("%s", charArray);
运行结果为:
2. 其它类型转 string
其它类型转 string 也很简单,一个 assign( ) 函数就可以搞定!
(1) CString 转 string
CString cStr("abc");
string str("sss");
str = cStr.GetBuffer(0); // 此处也可以是 str.assign(cStr.GetBuffer(0)); 或 str.assign(cStr);
cStr.Format("%s", "yyy"); // CString 的变化不会影响 String
运行结果:
(2) char* 转 string
可以在初始化的时候用char*来初始化string变量,也可以用assign()函数,举个例子:
string str("sss");
char *pChar = "bbb";
str.assign(pChar);
运行结果:
(3) char[] 转 string
string str("sss");
char charArray[200] = "ccc";
str.assign(charArray);
运行结果:
3 其它类型转 char*
其实就是获取其它类型指针的方法。
参考资料:
(1) http://hi.baidu.com/the_sun_23/item/39f118cc8ea2d66da8ba9423