字符串前面加_T()和L的区别

一、在解释_T()和L的区别前,我们需要先了解一下字符集,字符集分为:Unicode字符集和多字节字符集,我这里开发环境以VS2010为例,打开项目属性,右击项目在弹出的下拉列表框里选择属性。如下图(图1)

 

 在属性页依次展开:配置属性-常规,然后在项目默认值里找到字符集。如下图(图2)

 

 二、我们先把字符集配置成Unicode字符集,来看看在代码编程里使用字符串的实际情况。如下图(图3)

 

 图中字符串前面没有加_T()或L,在使用InsertItem函数时提示错误(Error:函数调用中的参数太少)。而真正导致错误的原因是字符串的使用。程序编译后提示的错误中也可以分析是字符串转换的问题(不能将参数 2 从“const char [5]”转换为“TCITEMW *”)。

此时我们只要在字符串前面加上L或_T()就可以修正错误,使其编译通过。如下图(图4)

 

三、L的作用是告诉编译器使用两个字节的Unicode字符集,_T()宏可以根据你的环境配置,使编译器选择合适的(Unicode还是ANSI)字符处理方式。 

如果配置的是Unicode,那么_T()宏会把字符串前面加一个L。这时_T("你好")等于L"你好"
如果配置的是多字节,那么_T()宏不会在字符串前面加 L ,此时_T("你好")等于 "你好" 

四、我们再把字符集配置成多字节字符集,看看会发生什么,如下图(图5) 

 

 从图中可以看出_T()宏的代码不会报错,加 L 的这行代码报错了。编译后提示错误( 不能将参数 2 从“const wchar_t[3]”转换为“TCITEMA *”),此时只要把 L 去掉就可以编译通过。

五、总结:可以把_T()宏认为是通用型。L使用在字符集配置为Unicode字符集时。
 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值