`

VC++ _T("") 与 L"

    博客分类:
  • VC++
 
阅读更多

 

记录:

1、在MSDN中搜索_T可以查询到相关内容。Using TCHAR.H Data Types with _MBCS Code. 和MSDN页面下面的内容应该详细了解一下。

 

 

摘自:http://blog.sina.com.cn/s/blog_635ff3050102v5w4.html

 

 

_T("")是一个宏,定义于tchar.h下。
       #define _T(x) _ _T(x)  
       #ifdef  _UNICODE
       #define _ _T(x) L ## x
  #else 
       #define _ _T(x)      x

  他的作用是让你的程序支持Unicode编码
  因为Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。
  而后者是双字节方式,方便处理双字节字符。Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。
  如果你编译一个程序为ANSI方式,_T实际不起任何作用,编译器会把_T("Hello")以ANSI方式保存;而如果编译一个程序为UNICODE方式,则编译器会把_T("Hello")字符串以UNICODE方式保存。
      _T和L的区别在于,L不管你是以什么方式编译,一律以UNICODE方式保存。
  LPSTR:32bit指针指向一个字符串,每个字符占1字节
  LPCSTR:32-bit指针指向一个常字符串,每个字符占1字节
  LPCTSTR:32-bit指针指向一个常字符串,每字符可能占1字节或2字节,取决于Unicode是否定义
  LPTSTR:32-bit指针每字符可能占1字节或2字节,取决于Unicode是否定义
  L是表示字符串资源为Unicode的。
  比如
  wchar_t Str[] = L"Hello World!";
  这个就是双子节存储字符了。
  _T是一个适配的宏~
  当
  #ifdef _UNICODE的时候
  _T就是L
  没有#ifdef _UNICODE的时候
  _T就是ANSI的。
  比如
  LPTSTR lpStr = new TCHAR[32];
  TCHAR* szBuf = _T("Hello");
  以上两句使得无论是在UNICODE编译条件下都是正确编译的。
  而且MS推荐你使用相匹配的字符串函数。
  比如处理LPTSTR或者LPCTSTR 的时候,不要用strlen ,而是要用_tcslen
  否则在UNICODE的编译条件下,strlen不能处理 wchar_t*的字符串。
  T是非常有意思的一个符号(TCHAR、LPCTSTR、LPTSTR、_T()、_TEXT()...),它表示使用一种中间类型,既不明确表示使用 MBCS,也不明确表示使用 UNICODE。那到底使用哪种字符集?编译的时候才决定   
      TCHAR是char还是wchar_t这个是根据是否定义了#ifdef _UNICODE来决定的。在vs2010中,根据选择字符集来决定了是否定义_UNICODE。
      Character Use Unicode Character Set
      typedef wchar_t     TCHAR;
      Character  Use Multi-Byte Character Set
      typedef char            TCHAR;

分享到:
评论

相关推荐

    vc++中L、_T()、TEXT()的区别

    vc++中L、_T()、TEXT()的用法

    Vc++ 模板库参考手册 、 Vc++ ATL 参考手册

    《M i c r o s o f t V i s u a l C + + 6 . 0 T e m p l a t e L i b r a r i e s R e f e r e n c e》中文版 全书由A c t i v e 模板库和O L E D B 模板库两篇和七部分构成。这七部分内容是: A c t i v e 模板库...

    VC++调用IDispatch接口属性和方法的封装类

    可以在VC++中如下调用IDispatch接口中的属性和方法 //获取属性值 _bstr_t bstrValue=CVB::get(pDispatch,L\"Value\"); //设置属性值 CVB::put(pDispatch,L\"Value\",bstrValue); //调用方法 _bstr_t bstrMessage2...

    vc++编写的下载图片软件GetImage

    先看要下载的图片链接(http://fmn017.xnimg.cn/fmn017/pic001/20080926/17/21/large_wJZc_3213f200058.jpg),再看下一张,是http://fmn014.xnimg.cn/fmn014/pic001/20080926/17/21/large_Ao10_3208l200058.jpg,...

    最新VC++学生成绩的输入与显示.pdf

    vc++框架设计,编辑框,列表框的应用,菜单栏,工具栏的调用

    kmp算法匹配子串vc++6.0

    基于c语言实现。作为一个IBM的研究人员...有四种氮基(A 腺嘌呤、 T 胸腺嘌呤、 G鸟嘌呤、 D胞嘌呤),例如,一个6碱基DNA序列可以用TAGACC来表示 给出一个DNA碱基序列的集合,确定在所有序列中都出现的最长的碱基序列

    VC++模板库参考手册

    第一篇 M i c r o s o f t V i s u a l C + + 6 .0 A c t i v e 模板库 第二篇 M i c r o s o f t V i s u a l C + + 6 .0 O L E D B 模板库 (中文)

    VC++6.0核心编程源码.rar

    你可以看到,每个错误都有3种表示法:即一个消息ID(这是你可以在源代码中使用的一个宏,以便与GetLastError的返回值进行比较),消息文本(对错误的英文描述)和一个号码(你应该避免使用这个号码,而应该使用消息...

    IP协议分析工具ipdog开源代码 ,VC++源代码

    -b ] Make stdout buffered [ -p ] Dump packet payloads [ -l ] Don't print link-layer headers [ -n ] Don't print network-layer headers [ -t ] Don't print transport-layer headers [ -m ] ...

    vc6.0 运行库参考手册

    本书是美国微软出版社授权的M i c r o s o f t V i s u a l S t u d i o 9 8 系列中文 版图书之一, 详细介绍了V i s u a l C + + 6 . 0 的i o s t r e a m 流和运行库, 并用 典型实例说明其用法, 是关于V i s u a...

    二叉排序树和平衡二叉树的实现(vc++)

    1 输入元素序列L,以回车(‘\n’)为输入结束标志,分别生成一棵二叉排序树T和平衡的二叉排序树BT ; 2 对二叉排序树T作中序遍历,输出结果; 3 在BT上插入元素x,当BT失衡时,考虑如下四种平衡旋转处理: (a)单向右旋...

    二叉树排序树建立及平衡处理

    L_Rotate(BSTree *p) 对以*p为根的平衡二叉排序树作左旋处理,处理之后p指向新的树根结点, 即旋转处理之前的右子树的根结点 LeftBalance(BSTree *T) 对以指针T所指结点为根的平衡二叉排序树作左平衡旋转处理, 本...

    计算机图形学基础教程(VC++)课程源码.zip

    kld计算机图形学基础教程程序代码

    MATLAB层次分析法

    层次分析法(AHP)是美国运筹学家匹茨堡大学教授萨蒂(T.L.Saaty)于上世纪70年代初,为美国国防部研究“根据各个工业部门对国家福利的贡献大小而进行电力分配”课题时,应用网络系统理论和多目标综合评价方法,提出的...

    精通sql结构化查询语句

    9.4 外连接 9.4.1 左外连接 9.4.2 右外连接 9.4.3 全外连接 9.4.4 在外连接中使用聚合函数 9.5 交叉连接 9.5.l 交叉连接的定义 9.5.2 交叉连接举例 9.6 多表连接的综合应用 9.6.1 内连接与左外连接的综合应用 ...

    Borland Delphi 2005 Architect Update 3

    Internal Error: L6812.33 of 5 Closed5283 Cannot read complete compiler error message.0.00 of 5 Closed5280 MessageDlg returns mrNone instead of mrCancel when aborted5.00 of 5 Closed5248 Assert fails ...

    vc做的测量单摆最大摆角对周期的影响,界面可视化

    单摆的周期T=2pai*sqrt(L/g),实验上要求最大摆角小于5度,物理学上也有科学家用实验测量了但被周期与最大摆角的关系,这里用VC编程实现,更具可视化的界面,并有运行截图详解。

    VS2013 MFC 编程基础(19个专题)

    VS2013 MFC 编程基础,共有19个专题实例,作为VS2013、VC++和MFC开发的基础入门资料,对初学者很有帮助!N和weet45厘序量D以量 #目度 M用啊 Mnua ca+程 WICELL 名啊 位 B日经验 进入应用程序向导,一开始会给出默认的...

    代码语法错误分析工具pclint8.0

    1.将pclint.rar解压至c:\, 这样lint文件就位与c:\pclint(安装目录)下了。 2.将c:\pclint\lnt 下的3个文件lib-w32.lnt,env-vc6.lnt,co-msc60.lnt拷贝至c:\pclint下, 再在安装目录下创建std.lnt和options.lnt两个...

    OPenGL编程书籍

    按[B]键控制混合,[F]键控制滤波,[L]键控制光照(但光并不随场景移动),还有[Page UP]和[Page Down]键。我希望你能喜欢Lionel对网站的贡献。我有空的时候我会让这个教程更容易学习。 11.旗帜效果 (飘动的纹理): ...

Global site tag (gtag.js) - Google Analytics