http://www.itdecent.cn/p/338fb8eaf2b4??C++11新特性轉(zhuǎn)換GB2312(ANSI)、UTF8、Unicode編碼文件
https://blog.csdn.net/libaineu2004/article/details/19245205?徹底解決Qt中文亂碼以及漢字編碼的問題(UTF-8/GBK)
http://www.cppblog.com/biao/archive/2009/08/31/94905.html? 一些轉(zhuǎn)換? ansi? unicode
轉(zhuǎn)換
??? string或者wstring轉(zhuǎn)換到CString:
??? 要把std::string或者std::wstring類型的數(shù)據(jù)存放到CString中,直接調(diào)用string::c_str()或者wstring::c_str()就行了.
??? CString轉(zhuǎn)換到string或者wstring
??? CString::GetBuffer(0)就能轉(zhuǎn)換到string或者wstring.如果編譯時候定義了UNICODE,則轉(zhuǎn)換到wstring;如果未定義,則轉(zhuǎn)換到string.
???? string與wstring之間的轉(zhuǎn)換
??? 微軟提供了一個工具,用于string和wstring之間的轉(zhuǎn)換.
這個頭文件中提供了一個utf8util?的命名空間,里面包含了如下的字符轉(zhuǎn)換函數(shù):
? 1:? std::wstring UTF16FromUTF8(conststd::string& utf8);
? 2:? std::wstring UTF16FromUTF8(constchar* utf8);
? 3:? std::stringUTF8FromUTF16(conststd::wstring & utf16);
? 4:? std::stringUTF8FromUTF16(constwchar_t * utf16);
這個工具足夠string與wstring之間的轉(zhuǎn)換了.
https://blog.csdn.net/qq_27114909/article/details/88648402? ?有相關(guān)的轉(zhuǎn)換,有什么不同呢?
https://download.csdn.net/download/weixin_39840914/11300626? ?某替代CString類? ?https://www.cnblogs.com/jojodru/p/4002267.html
https://www.cnblogs.com/ranjiewen/p/5770639.html? ?介紹處理的一些知識
微軟的寬字節(jié):指Unicode編碼,存儲方式采用UTF-16。因為只有2字節(jié)和4字節(jié)兩種情況,故用wchar_t,占兩個字節(jié)。
多字節(jié):指ANSI編碼。由于英文占一個字節(jié),所以用char,占一個字節(jié)。
https://blog.csdn.net/chenjiayi_yun/article/details/28677209
qt?
https://www.cnblogs.com/guolixiucai/p/4716521.html? ?CString,std中是string、wstring 基本用法
https://blog.csdn.net/chenscmail/article/details/8574232
在MFC中字串類是CString,std中是string、wstring,他們之間差別是內(nèi)部包含的字符編 ? 碼 ? 不一樣,本文中介紹了幾個微軟的宏,可以輕松的對這幾種字串進行轉(zhuǎn)換.
·??? CString、CStringA,CStringW的關(guān)系
在MFC的工程中我們可以設(shè)置工程的編碼屬性:
①:對于UNICODE的編碼屬性CString被定義為CStringW,其內(nèi)部是WCHAR寬字符
②:對于多字節(jié)的編碼屬性 ??CString被定義為CStringA,其內(nèi)部是char單字節(jié)字符
·??? std::string、std::wstring的關(guān)系
①:std::string內(nèi)部是char單字節(jié)字符
②:std::wstring內(nèi)部是WCHAR寬字符
通過上面的關(guān)系來看,他們之間的轉(zhuǎn)換也就是wchar與char之間的轉(zhuǎn)換.
#include
CString cstring;
CStringA cstringA;
CStringW cstringW;
string stdString;
wstring stdWString;
//注意!CA2T與CT2A是與編碼方式有關(guān)的宏定義
cstring=CA2T(stdString.c_str());//std::string->CString
stdString=CT2A((LPCTSTR)cstring);//CString->std::string
cstringA=stdString.c_str();//std::string->CStringA
stdString=(LPCSTR)cstringA;//CStringA->std::string
cstringA=CW2A(stdWString.c_str());//std::wstring->CStringA
stdWString=CA2W((LPCSTR)cstringA);//CStringA->std::wstring
cstringW=CA2W(stdString.c_str());//std::string->CStringW
stdString=CW2A((LPCWSTR)cstringW);//CStringW->std::string
cstringW=stdString.c_str();//std::string->CStringW
stdWString=(LPCWSTR)cstringW;//CStringW->std::wstring
? ? ? ?上面的這些轉(zhuǎn)換與工程的編碼格式無關(guān),其中CStringA和std::string,CStringW和std::wstring 是相對應(yīng)的,可以直接提取其內(nèi)部的字串指針進行轉(zhuǎn)換。而對于內(nèi)部字符編碼不一致的我們通過CW2A和CA2W進行轉(zhuǎn)換