雖然網上關於CString,string,char數組的轉換的文章一大堆,可是感受很亂很雜,並且許多並不能真正達到目的,在此,我把本身調試經過的轉換方法貼到這裏,作個筆記。數組
編譯環境:vs2008, Use Unicode Character Set微信
- //----------------ANSI字符串轉換爲UNICODE字符串----------------------//
-
- // 待轉換的數組
- char szDCBparam[50] = {'0','1','\0'};
-
- // 計算須要的緩衝區大小
- DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, szDCBparam, -1, NULL, 0);
- // 分配存放轉換後數據的緩衝區
- wchar_t *pwText = new wchar_t[dwNum] ;
- // 轉換後的數據存放在pwText所指向的空間
- if (!MultiByteToWideChar (CP_ACP, 0, szDCBparam, -1, pwText, dwNum))
- {
- return;
- }
- // 注: 若是是char型數組轉CString,直接使用CString szTest = CString(szDCBparam);
-
-
- //----------------UNICODE字符串轉換爲ANSI字符串----------------------//
- //----------------將CString轉爲char型數組---------------------------//
-
- // 待轉換的數據
- CString szErrorInfo = _T("this is a test string!");
-
- // 保存錯誤信息的ANSI字符串的緩衝區,注意,緩衝區要足夠大
- char InfoString[100];
-
- // 轉換後的數據存放在InfoString數組中
- if (!WideCharToMultiByte(CP_ACP,0,LPCTSTR(szErrorInfo),-1,InfoString,100,NULL,NULL))
- {
- return;
- }
-
- //----------------將CString轉爲string----------------------//
- CString cstr=_T("test");
- std::string str = (CStringA)cstr;
- // 注意,在vs2008下,使用std::string temp = cstr.GetBuffer(0)不行。
-
- //----------------將string轉爲CString----------------------//
- std::string strTest = "test";
- CString cstrTest = CString(strTest.c_str());
免費學習更多精品課程,登陸樂搏學院官網http://www.learnbo.com/ide
或關注咱們的官方微博微信,還有更多驚喜哦~學習
本文出自 「Jhuster的專欄」 博客,請務必保留此出處http://ticktick.blog.51cto.com/823160/317550this