Visual C++各種字符串相互轉換

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章