1. 程式人生 > >VC 中與字串相關的巨集 _T、TEXT,_TEXT、L 的作用

VC 中與字串相關的巨集 _T、TEXT,_TEXT、L 的作用

 一、 在字串前加一個 L 作用: 
   如   L" 我的字串"    表示將 ANSI字串轉換成unicode 的字串,就是每個字元佔用兩個位元組。
  strlen("asd")   =    3 ;   
  TCHAR wszTemp[] = L"asd"; 
  sizeof(wszTemp)=6;

  二、 
 _T 巨集可以把一個引號引起來的字串,根據你的環境設定,使得編譯器會根據編譯目標環境選擇合適的(Unicode還是ANSI)字元處理方式
   如果你定義了UNICODE,那麼_T巨集會把字串前面加一個L。這時 _T("ABCD") 相當於  L"ABCD"  ,這是寬字串。 
   如果沒有定義,那麼_T巨集不會在字串前面加那個L,_T("ABCD") 就等價於  "ABCD"

三、 TEXT,_TEXT  _T  一樣的

如下面三語句:   

  TCHAR   szStr1[]   =   TEXT("str1");   
  char   szStr2[]   =   "str2";   
  WCHAR   szStr3[]   =   L("str3");   
  那麼第一句話在定義了UNICODE時會解釋為第三句話,沒有定義時就等於第二句話。  
  但二句話無論是否定義了UNICODE都是生成一個ANSI字串,而第三句話總是生成UNICODE字串。   

  為了程式的可移植性,建議都用第一種表示方法。   
  但在某些情況下,某個字元必須為ANSI或UNICODE,那就用後兩種方法。