MFC之CString與const char* string 轉換


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編碼,也就是CString A
CString s = _T("abc");
std::string str = CStringA(s);


作者:周星星
鏈接:https://www.zhihu.com/question/27128092/answer/115797905
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

綜上,所以一般需要const char*類型時可用string變量轉換,而需要CString類型時則直接用const char*類型賦值。應盡量避免CString轉換為const char *的情況!


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com