CString string wstring

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)換.

?utf8conv.h

這個頭文件中提供了一個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)換

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容