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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

WCHAR,CHAR,TCHAR的区别

發(fā)布時(shí)間:2025/3/12 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WCHAR,CHAR,TCHAR的区别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

現(xiàn)在C++的字符分成兩種類型wchar_tchar。??
其中???WCHAR==wchar_t,CHAR==char。??
TCHAR是一種條件編譯的類型,根據(jù)條件可以代表wchar_t或char。??

CHAR實(shí)施上就是unsigned char,
WCHAR為寬字符,
而TCHAR根據(jù)是否支持unicode而不同。
在程序使用sizeof(TCAHR),當(dāng)默認(rèn)設(shè)置時(shí),這個(gè)值是1;
當(dāng)定義UNICODE宏時(shí),這個(gè)值是2。?

?

WCHAR,CHAR,TCHAR的關(guān)系實(shí)際上是這樣的??
???
#ifdef???UNICODE????
??????????typedef???wchar_t???TCHAR;????
#else????
??????????typedef???unsigned???char???TCHAR;????
#endif????
?????
typedef???unsigned???char???CHAR;????
typedef???unsigned???wchar_t???WCHAR;?

?


Windows使用兩種字符集ANSI和UNICODE,

前者就是通常使用的單字節(jié)方式,但這種方式處理象中文這樣的雙字節(jié)字符不方便,容易出現(xiàn)半個(gè)漢字的情況。

而后者是雙字節(jié)方式,方便處理雙字節(jié)字符。

Windows NT的所有與字符有關(guān)的函數(shù)都提供兩種方式的版本,而Windows 9x只支持ANSI方式。_T一般同字常數(shù)相關(guān),如_T("Hello")。如果你編譯一個(gè)程序?yàn)锳NSI方式,_T實(shí)際不起任何作用。

而如果編譯一個(gè)程序?yàn)閁NICODE方式,則編譯器會(huì)把"Hello"字符串以UNICODE方式保存。

_T()和_L()的區(qū)別在于,_L不管你是以什么方式編譯,一律以以 UNICODE方式保存。

?

Visual C++里邊定義字符串的時(shí)候,用_T來(lái)保證兼容性,VC支持ascii和unicode兩種字符類型,用_T可以保證從ascii編碼類型轉(zhuǎn)換到unicode編碼類型的時(shí)候,程序不需要修改。

如果將來(lái)你不打算升級(jí)到unicode,那么也不需要_T,

unicode,第個(gè)字符使用2個(gè)字節(jié),包含了世界上幾乎所有語(yǔ)言,每種語(yǔ)言的每一個(gè)字符在unicode里的值都是惟一的。

ASCII 碼使用指定的 7 位或 8 位二進(jìn)制數(shù)組合來(lái)表示 128 或 256 種可能的字符。標(biāo)準(zhǔn) ASCII 碼也叫基礎(chǔ)ASCII碼,使用 7 位二進(jìn)制數(shù)來(lái)表示所有的大寫和小寫字母,數(shù)字 0 到 9、標(biāo)點(diǎn)符號(hào), 以及在美式英語(yǔ)中使用的特殊控制字符。不能適用于多語(yǔ)言平臺(tái)。

ANSI

為使計(jì)算機(jī)支持更多語(yǔ)言,通常使用 0x80~0xFF 范圍的 2 個(gè)字節(jié)來(lái)表示 1 個(gè)字符。比如:漢字 '中' 在中文操作系統(tǒng)中,使用 [0xD6,0xD0] 這兩個(gè)字節(jié)存儲(chǔ)。

不同的國(guó)家和地區(qū)制定了不同的標(biāo)準(zhǔn),由此產(chǎn)生了 GB2312, BIG5, JIS 等各自的編碼標(biāo)準(zhǔn)。這些使用 2 個(gè)字節(jié)來(lái)代表一個(gè)字符的各種漢字延伸編碼方式,稱為 ANSI 編碼。在簡(jiǎn)體中文系統(tǒng)下,ANSI 編碼代表 GB2312 編碼,在日文操作系統(tǒng)下,ANSI 編碼代表 JIS 編碼。

?

  不同 ANSI 編碼之間互不兼容,當(dāng)信息在國(guó)際間交流時(shí),無(wú)法將屬于兩種語(yǔ)言的文字,存儲(chǔ)在同一段 ANSI 編碼的文本中。

總結(jié)

以上是生活随笔為你收集整理的WCHAR,CHAR,TCHAR的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。