1. 程式人生 > 其它 >【轉】MFC CStirng、CStringA、CStringW的使用

【轉】MFC CStirng、CStringA、CStringW的使用

1.CString在多位元組環境下(未定義UNICODE)為CStringA,在Unicode環境下(定義有UNICODE)為CStringW。

2.對於涉及到char*與CStringA或CString轉換時最好使用CStringA而不要使用內部儲存結構不一定的CString,對wchar_t*與CStringW或CString同理。

3.CStringA在UNICODE環境下可以正確轉換為CString,同樣CString在UNICODE環境下轉換為CStringA:

CStringA strA = "漢字啊";
CString str;
str = strA; //注意這裡應呼叫賦值操作符過載函式,不能直接CString str = strA,因為會呼叫賦值建構函式而出錯
CString str2 = _T("也是漢字啊");
CStringA strA2;
strA2 = str2;

同理CStringW在多位元組環境下也可以正確轉換為CString,CString在多位元組環境下可正確轉換為CStringW:

CStringW strW = L"漢字啊";
CString str;
str = strW;
CString str2 = "也是漢字啊";
CStringW strW2;
strW2 = str2;

3.對於CStringA轉換為const char*(注意const不能少)不要使用GetBuffer(),因為這樣會造成不必要的的記憶體分配,並且使用後還需要ReleaseBuffer();

其實CStringA可以通過operator LPSTR()操作符過載直接轉換為const char*:

CString str = “漢字”;//只能是CStringA或多位元組環境下的CString

const char* c_str = str;//直接轉換,正確。

對CStringW同理:

CString str = _T("漢字啊");
const wchar_t* c_str = str; //轉換正確


————————————————
版權宣告:本文為CSDN博主「Linux菜_鳥」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/u011519892/article/details/17286587