精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
C++ MFC string轉Cstring為什么會亂碼

     前段時間學習mfc編了一個小程序,其中涉及到CString 與string的轉換的時候感覺特別蛋疼,因此再此總結一下經驗。希望能夠對大家能有所幫助

  通常有兩種字符集模式  unicode字符集 和 ascii字符集,其中unicode有多種編碼方式。utf8, utf16和utf32,還有 utf7, 再其中。utf8 和ascii編碼兼容, 但是使用兩個以上的字節存儲中文等。 wstring實際上用的是寬字符。所有的字符都用兩個字節存儲(windows)。

 

stringg -> CString
通常的方法是

CString.format("%s", string.c_str());

但是 :

   在vs2010 的情況下,是結果運行出來的是亂碼,原因是CString.Format把string的每兩個char當作一個wchar進行了轉換,結果會是一串亂碼。

 

網上各種大神們主要給出來以下幾種解決方案

1.直接把設置改為多字符集即是項目->(項目)屬性->配置屬性->常規..里面有個字符集..字符集選成使用多字節字符集...(我用的是vs2010)這樣直接跳過了字符轉換,使用asci編碼。如果不想費心的話可以這樣試試

2. 在不修改字符集的情況下,Unicode編碼使用用wstring,wcstring,wchar 推薦使用這樣,因為unicode的界面明顯美觀且更為通用

3.使用MultiByteToWideChar函數,有關這個函數的說明可以去msdn上面去搜索

4.還有一種是ms提供的一種解決方法

   ATL 7.0 中引入了相應的宏,建議自己去閱讀msdn中相應的類容

   CA2T szr(s.c_str());
   CString = (LPCTSTR)szr;//(LPCTSTR)為強制類型轉換

   網上有人說這種方法不安全,主要是作用域的問題,具體我也不太明白

 

cstring to string


  vs2010 Unicode下:
  CStringW str(L"test"); 
  CStringA stra(str.GetBuffer(0)); 
  str.ReleaseBuffer(); 
  std::string strs (stra.GetBuffer(0)); 
  stra.ReleaseBuffer();

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
MFC中 CSting與std::string互相轉換
Unicode 和多字節字符集 (MBCS) 支持
字符,字節和編碼
JSP中文亂碼問題解決方法詳解
Tomcat關于encoding編碼的默認設置以及亂碼產生的原因
struts原理與實踐(4)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 抚远县| 河北区| 东兴市| 资兴市| 连江县| 中宁县| 日土县| 马关县| 南汇区| 噶尔县| 紫云| 永安市| 商丘市| 八宿县| 吉林市| 尉氏县| 泰来县| 临颍县| 忻州市| 进贤县| 汝城县| 株洲县| 都江堰市| 收藏| 呼和浩特市| 泗洪县| 扎赉特旗| 栖霞市| 西畴县| 百色市| 得荣县| 子洲县| 苗栗县| 深水埗区| 右玉县| 永和县| 襄汾县| 乌兰县| 韩城市| 皋兰县| 柯坪县|