在每次用到這些字符串轉換的時候,總是記得不是很清楚,查找這些資料也總是浪費了很多時間,在此總結一下,方便以後使用。
準備工作:
(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