_T(字符串)
L(字符串)这两种写法有什么含义?

解决方案 »

  1.   

    Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。WindowsNT的所有与字符有关的函数都提供两种方式的版本,而Windows9x只支持ANSI方式。_T一般同字常数相关,如_T("Hello"。如果你编译一个程序为ANSI方式,_T实际不起任何作用。而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串以UNICODE方式保存。_T和_L的区别在于,_L不管你是以什么方式编译,一律以UNICODE方式保存。_T表示使用一种中间类型,既不明确表示使用 MBCS(ANSI类型),也不明确表示使用 UNICODE。具体情况是根据编译器设置而定的。
      

  2.   

    _T(),在unicode环境下,其值为unicode字符;在Ansi下,其值为Ansi字符。
    L,unicode字符串常量。
      

  3.   

    设置条件编译的方式是:VC6中,"Project\Settings...\C/C++卡片 Preprocessor definitions" 中添加或修改 _MBCS、_UNICODE;VC.NET中,"项目\属性\配置属性\常规\字符集"然后用组合窗进行选择。
      

  4.   

    其实,你右键go to define....就可以看到她们的定义了。。主要是用在unicode环境下可以参考一下下面的文章http://www.codeproject.com/string/CPPStringGuide1.asp
      

  5.   

    _T根据当前是否定义了MBCS而决定是否是UNICODE
    如果定义了UNICODE,则编译器为你加上L
    L明确指出是UNICOUDE字符串
      

  6.   

    Generic-text data type name _T or _TEXT
    _UNICODE defined ,L (converts following character or string to its Unicode counterpart)
      

  7.   

    如果定义了_UNICODE宏则_T 相当于L
      

  8.   

    比如L"abcd"表示该字符串是const WCHAR *类型的字符串_T("abcd")则取决于_UNICODE宏定义
    如果_UNICODE定义,则_T("abcd")和L"abcd"一样
    否则_T("string")是ansi字符串
      

  9.   

    一般要在程序里使用UNICODE字符编码时
    一般都有在stdafx.h里定义 
    #define UNICODE   
    #define _UNICODE  (c运行库) 定义了这个后,如果程序里用到_T或者_TEXT都会被转化为_L