MFC開發時經常會遇到CString、string/std::string、char*等類型相互轉換的問題,現將一些思考與心得記下來與大家分享:
一、CString強制類型轉換為const char*,在變量前加上:(char *)(LPCTSTR),這樣做雖不會報錯,但其轉換后的值可能是亂碼,不推薦這樣做!
二、利用中間變量(string類型),原理:
1)CString類型不能自動裝換為const char*。
2)const char*類型可自動裝換為CString。
3)std::string類型調用c_str()方法就可輕松轉換為const char*。
4)CString與std::string相互轉換:
CString cs("Hello");
std::string s((LPCTSTR)cs);
std::string s("Hello");
CString cs(s.c_str());
三、CString可能是unicode編碼(CString通過宏來確定到底是CStringA還是CStringW),因此應該先將之轉化為mbcs編碼,也就是CStringA
-
CString s = _T("abc");
-
std::string str = CStringA(s);