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