_T("Hello")是一個宏,他的作用是讓你的程式支援Unicode編碼,因為Windows使用兩種字元集ANSI和UNICODE,前者就是通常使用的單位元組方式,但這種方式處理象中文這樣的雙位元組字元不方便,容易出現半個漢字的情況。而後者是雙位元組方式,方便處理雙位元組字元。
Windows NT的所有與字元有關的函數都提供兩種方式的版本,而Windows 9x只支援ANSI方式。
如果你編譯一個程式為ANSI方式,_T實際不起任何作用。而如果編譯一個程式為UNICODE方式,則編譯器會把"Hello"字串以UNICODE方式儲存。
_T和_L的區別在於,_L不管你是以什麼方式編譯,一律以UNICODE方式儲存。
---------------------------------------------------------------------------------------------------------------
1\C++語言中“_T”是什麼意思?
Visual C++裡邊定義字串的時候,用_T來保證相容性,VC支援ascii和unicode兩種字元類型,用_T可以保證從ascii編碼類別型轉換到unicode編碼類別型的時候,程式不需要修改。
如果將來你不打算升級到unicode,那麼也不需要_T,
---------------------------------------------------------
_t("hello world")
在ansi的環境下,它是ansi的,如果在unicode下,那麼它將自動解釋為雙位元組字元串,既unicode編碼。
這樣做的好處,不管是ansi環境,還是unicode環境,都適用。
2\請問在vc++中的字串_T("ABC")和一個普通的字串“ABC”有什麼區別。
_T("ABC")
表示如果定義了unicode
它表示 L"ABC",每個字元為16位,寬字元字串
---------------------------------------------------------
if not UNICODE
它就是ascii的"ABC",每個字元為8位
"ABC"就是指ascii字串"ABC"
----------------------------------------------------------