CString.Format(_T())

在vs.Net   2003   (Version   7.1.3088   English)的代碼入下:  
  CString   m_strShow;  
  m_strShow.Format("%d",100);  
  在使用Use   Multi-Byte   Character   Set編譯事一切正常;但是使用Use   Unicode   Character   Set選項編譯時,出現如下的錯誤:  
    error   C2664:   'void   ATL::CStringT<BaseType,StringTraits>::Format(ATL::CSimpleStringT<BaseType,t_bMFCDLL>::PCXSTR,...)'   :   cannot   convert   parameter   1   from   'const   char   [3]'   to   'ATL::CSimpleStringT<BaseType,t_bMFCDLL>::PCXSTR'  
                  with  
                  [  
                          BaseType=wchar_t,  
                          StringTraits=StrTraitMFC_DLL<wchar_t>,  
                          t_bMFCDLL=true  
                  ]  
                  and  
                  [  
                          BaseType=wchar_t,  
                          t_bMFCDLL=true  
                  ]  

 Windows使用兩種字符集ANSI和UNICODE,前者就是通常使用的單字節方式,但這種方式處理象中文這樣的雙字節字符不方便,容易出現半個漢字的情況。而後者是雙字節方式,方便處理雙字節字符。Windows NT的所有與字符有關的函數都提供兩種方式的版本,而Windows 9x只支持ANSI方式。_T一般同字常數相關,如_T("Hello")。如果你編譯一個程序爲ANSI方式,_T實際不起任何作用。而如果編譯一個程序爲UNICODE方式,則編譯器會把"Hello"字符串以UNICODE方式保存。_T和_L的區別在於,_L不管你是以什麼方式編譯,一律以以UNICODE方式保存。 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章