CString,string,char數組的轉換

雖然網上關於CString,string,char數組的轉換的文章一大堆,可是感受很亂很雜,並且許多並不能真正達到目的,在此,我把本身調試經過的轉換方法貼到這裏,作個筆記。數組

    編譯環境:vs2008, Use Unicode Character Set微信

 
  1. //----------------ANSI字符串轉換爲UNICODE字符串----------------------//   
  2.  
  3. // 待轉換的數組   
  4. char szDCBparam[50] = {'0','1','\0'};   
  5.  
  6. // 計算須要的緩衝區大小   
  7. DWORD dwNum = MultiByteToWideChar (CP_ACP, 0, szDCBparam, -1, NULL, 0);   
  8. // 分配存放轉換後數據的緩衝區   
  9. wchar_t *pwText = new wchar_t[dwNum] ;   
  10. // 轉換後的數據存放在pwText所指向的空間  
  11. if (!MultiByteToWideChar (CP_ACP, 0, szDCBparam, -1, pwText, dwNum))   
  12. {   
  13.     return;   
  14. }   
  15. // 注: 若是是char型數組轉CString,直接使用CString szTest = CString(szDCBparam);
  16.  
  17.  
  18. //----------------UNICODE字符串轉換爲ANSI字符串----------------------//  
  19. //----------------將CString轉爲char型數組---------------------------//  
  20.  
  21. // 待轉換的數據   
  22. CString szErrorInfo = _T("this is a test string!");   
  23.  
  24. // 保存錯誤信息的ANSI字符串的緩衝區,注意,緩衝區要足夠大   
  25. char InfoString[100];   
  26.  
  27. // 轉換後的數據存放在InfoString數組中  
  28. if (!WideCharToMultiByte(CP_ACP,0,LPCTSTR(szErrorInfo),-1,InfoString,100,NULL,NULL))   
  29. {   
  30.     return;   
  31. }   
  32.  
  33. //----------------將CString轉爲string----------------------//  
  34. CString cstr=_T("test");   
  35. std::string str = (CStringA)cstr;   
  36. // 注意,在vs2008下,使用std::string temp = cstr.GetBuffer(0)不行。
  37.  
  38. //----------------將string轉爲CString----------------------//  
  39. std::string strTest = "test";  
  40. CString cstrTest = CString(strTest.c_str()); 

免費學習更多精品課程,登陸樂搏學院官網http://www.learnbo.com/ide

或關注咱們的官方微博微信,還有更多驚喜哦~學習

本文出自 「Jhuster的專欄」 博客,請務必保留此出處http://ticktick.blog.51cto.com/823160/317550this

相關文章
相關標籤/搜索