日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++ MFC string转Cstring为什么会乱码

發布時間:2023/12/2 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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();

總結

以上是生活随笔為你收集整理的C++ MFC string转Cstring为什么会乱码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。