CString在DBCS字符集時只能轉換爲char和string; 在UNICODE字符集時只能轉換爲wchar_t和wstring.
但無論在什麼字符集下char, wchar_t, string, wstring都能轉換爲CString.
char能轉換爲string, wchar_t能轉換爲wstring
但char和wchar_t, string和wstring之間, 要用MultiCharToWideChar和WideCharToMultiChar轉換.
或者通過CString作爲媒介,
在DBCS字符集時, 把wchar_t, wstring轉換爲char, string.
在UNICODE字符集時, 把char, string轉換爲wchar_t, wstring.
#define MB_CHAR "你好, 世界!"
#define UN_CHAR L"你好, 世界!"
//*********************************************/
// char, wchar轉換爲string,wstring
//*********************************************/
string str1 = MB_CHAR;
wstring wstr1 = UN_CHAR;
//*********************************************/
// char, wchar轉換爲CString
//*********************************************/
#ifndef _UNICODE //DBCS時
CString cstr1 = DB_CHAR;
#else //UNICODE時
CString cstr2 = UN_CHAR;
#endif
CString cstr3(MB_CHAR);
CString cstr4(UN_CHAR);
//*********************************************/
//string,wstring轉換爲char,wchar
//*********************************************/
string str4 = MB_CHAR;
char szBuf1[100];
strcpy_s(szBuf1, str4.c_str());
wstring wstr4 = UN_CHAR;
wchar_t szwBuf1[100];
wcscpy_s(szwBuf1, wstr4.c_str());
//*********************************************/
//string,wstring轉換爲CString
//*********************************************/
string str5 = MB_CHAR;
wstring wstr5 = UN_CHAR;
#ifndef _UNICODE //DBCS時
CString cstr5 = str5.c_str();
#else //UNICODE時
CString cstr6 = wstr5.c_str();
#endif
CString cstr7(str5.c_str());
CString cstr8(wstr5.c_str());
//*********************************************/
// CString轉換爲char, wchar
//*********************************************/
CString cstr9(MB_CHAR);
#ifndef _UNICODE //DBCS時
char szBuf2[100];
strcpy_s(szBuf2, cstr9);
#else //UNICODE時
wchar_t szwBuf2[100];
wcscpy_s(szwBuf2, cstr9);
#endif
//*********************************************/
// CString轉換爲string, wstring
//*********************************************/
CString cstr10(MB_CHAR);
#ifndef _UNICODE //DBCS時
string str6(cstr10);
str6 = cstr10;
#else //UNICODE時
wstring wstr6(cstr10);
wstr6 = cstr10;
#endif