CStringA=ANSI是嗎?
CStringW=Unicode是嗎?
char*=ANSI是嗎?
wchar_t*=Unicode是嗎?
CStringA<->CStringW怎么辦?
CStringA<->char*怎么辦?
CStringW<->wchar_t*怎么辦?
CStringW<->char*可以嗎?
CStringA<->wchar_t*可以嗎?
char*<->wchar_t*可以嗎?
那UTF-8又是用什么識別符號宣告的變數?
uj5u.com熱心網友回復:
C++11中,utf-8也是一種多位元組編碼方法, 基本跨度也是一位元組所以用char*,const char* utf8_string = u8"漢字";
utf-8也是一種Unicode, windows上面的Unicode其實是utf-16,
因為windows本身API沒有utf8版本, 所以需要轉換, 當然,utf幾個互相轉換的
代碼非常簡單, 大部分人都能寫,所以一般轉換效率要高.
wchar_t 是c/c++寬字符型別, 標準并未規定其實際編碼方式,像
c++11具體規定的utf-8, utf-16, utf-32字符()就強制規定了編碼方式
auto a = u8'U';
auto b = u'T';
auto c = U'F';
a -> char, b -> char16_t, c-> char32_t
uj5u.com熱心網友回復:
unicode是概念,是抽象,具體實作有utf8,utf16, utf32,其中windows核心是utf16-little-endian格式的。CString的東西不愛用,因為以前沒有CStringA和W的區別,至今已經完全不用這個類了。
uj5u.com熱心網友回復:
CSingA 和 CSgingW 用 = 運算子 就可以互相轉化,uj5u.com熱心網友回復:
前面是對的。不同字符集用CA2W和CW2A轉換uj5u.com熱心網友回復:
多查一些資料吧,只有徹底理解字符集和編碼,才能給出答案。3樓4樓的方法,在特殊情況下有問題,比如中文系統下編的程式在日文系統下用,可能會亂碼。
它的代碼頁是依賴于你的系統注冊表的,或者依賴你程式初始化的時候的區域設定。
一樓二樓字不多,但資訊量太大。你多百度一下,多看幾篇博客,理解一下。
uj5u.com熱心網友回復:
對電腦而言沒有亂碼,只有二進制位元組;對人腦才有亂碼。啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8Auj5u.com熱心網友回復:
CStringA和CStringW可以直接互轉,內部自動轉換編碼,當然早期VS沒有這個功能CStringA和char*可以直接用,運算子多載和建構式多載保證了這一點
CStringW和wchar_t*可以直接用,理由同上
char*和wchar_t*的互轉可以利用第一條,轉換程序:char* -> CStringA -> CStringW -> wchar_t*
也可以用宏 wstr = CA2W(cstr) cstr = CW2A(wstr)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/134083.html
標籤:基礎類
上一篇:短信貓怎樣實作用戶評價系統?
