`

C++ 之 _T()的学习。。。。。

 
阅读更多

_T("")是一个宏,他的作用是让你的程序支持Unicode编码
因为Windows使用两种字符集ANSI和UNICODE,
前者就是通常使用的单字节方式,
但这种方式处理象中文这样的双字节字符不方便,
容易出现半个汉字的情况。
而后者是双字节方式,方便处理双字节字符。

Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式。
如果你编译一个程序为ANSI方式,
_T实际不起任何作用。
而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串以UNICODE方式保存。_T和_L的区别在于,_L不管你是以什么方式编译,一律以UNICODE方式保存。

<wbr><wbr></wbr></wbr>

LPSTR:32bit指针指向一个字符串,每个字符占1字节

LPCSTR:32-bit指针指向一个常字符串,每个字符占1字节
LPCTSTR:32-bit指针指向一个常字符串,每字符可能占1字节或2字节,取决于Unicode是否定义
LPTSTR:32-bit指针每字符可能占1字节或2字节,取决于Unicode是否定义

<wbr><wbr></wbr></wbr>

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。那到底使用哪种字符集?编译的时候才决定

http://blog.csdn.net/doubaijun/article/details/3297104

分享到:
评论

相关推荐

    零起点学通C++学习_多媒体范例教学代码

    1.3 学习c++之前需要先学C吗 1.4 c++与其他语言的区别 1.5 c++的版本以及安装问题 第2章 做一个最简短的C4-+程序 2.1 简单的屏幕输出小程序 2.2 输出语句的使用 2.3 std::介绍 2.4 iostream与iostream.h的...

    Delphi版T-Cmd源码.rar_c++后门源码_cmd 源码_cmd编辑t_delphi cmd

    T-CMD 是一款用 C++ 编写的后门程序,网上已有 C++ 源码发布。 在本人学习 C++ 的时候,顺便把他翻译成了 Pascal 源码,突然感觉以前感到高深莫测的 C++ 也不那么可怕了。特贡献出来,给大家学习 C++ 和 Delphi 的...

    新手学习C++入门资料

    C++中还包括wchar_t数据类型,wchar_t也是字符类型,但是是那些宽度超过8位的数据类型。许多外文字符集所含的数目超过256个,char字符类型无法完全囊括。wchar_t数据类型一般为16位。 标准C++的iostream类库中包括...

    C++的Shell排序算法代码学习

    c++ 语言的应用#include  using namespace std;  template&lt;class T&gt;  void ShellInsert(T a[],size_t a_size,size_t dk)  {  for(int i=dk;i!=a_size;++i){  cout;  if(a[i][i-dk]) {  T temp=a[i];  int j...

    C++程序设计语言_特别版PDF

    他如此评价自己的这本作品:“要学习C++语言和程序设计,要将C++应用于程序设计实践,本书自然是必读之书。这个‘特别版’以标准化的C++语言为基础,讨论了C++的各种语言特征和有效使用这一语言的程序设计技术。书中...

    C++编写的t贪吃蛇游戏

    用C++编写的贪吃蛇游戏,大家可以下来学习一下。用C++编写的贪吃蛇游戏,大家可以下来学习一下。

    C++逆向学习三步走 v0.1

    《C++逆向学习三步走》PDF精编版 v0.1(20100918) 《C++逆向学习三步走》是A1Pass精心打造的一个系列教程,每个章节都经过笔者深思熟虑与读者的层层考验,是初学逆向工程优秀自学参考资料。 此系列教程目前并没有...

    c++学习文档

    C++由美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普博士在20世纪80年代初期发明并实现(最初这种语言被称作“C with Classes”带类的C)。开始,C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新...

    轻松学习c++&C++典型例题

    template&lt;typename T&gt; void Stack&lt;T&gt;::Push(const T &data) { if(IsFull()) throw pushOnFull&lt;T&gt;(data); //栈满则抛出异常 elements[++top]=data; //栈顶指针先加1,元素再进栈,top是指向栈顶元素 } template...

    T tree C++ 源代码

    用 C++ 实现的 T tree 源代码,代码风格书写良好,注释清晰,是学习该数据结构很好的资料。该源代码思路清晰,结构严谨。

    C++11中的mutex, lock, condition variable实现分析

    不过里面也有很多细节值得学习。  std::mutex  先来看下std::mutex:  包增了一个pthread_mutex_t __m_,很简单,每个函数该干嘛干嘛。 C++ class mutex { pthread_mutex_t __m_; public: mutex() _...

    c++遍历文件夹及其中文件

    自己正在学习C++的资料,放上来大家一起学习学习

    C++语言学习,代码练习.rar

    c++语言 代码 c++语言程序代码 C++必背代码 c++入门代码是什么 C++入门经典中的代码 c++简单代码 求初学者c++语言程序代码 求一段简单的c++代码 一段简单的C++代码求每行的详细解释! 谢谢 本人新手 c++语言 代码 #...

    【李宁】征服C++11(史上最权威C++视频教程).zip

    学习李宁老师的C++课程时总结了一份老师的源代码,希望对大家有所帮助

    C++常用stl算法.pdf

    学习c++,stdl 常用的算法方法,比如for_each,bind,等

    深入理解C++11:C++11新特性解析与应用

    附录中则介绍了C++11标准与其他相关标准的兼容性和区别、C++11中弃用的特性、编译器对C++11的支持情况,以及学习C++11的相关资源。《深入理解C++11:C++11新特性解析与应用》免责声明序前言第1章 新标准的诞生 11.1 ...

    C++,学习编程的方法

     美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始...

    C++源代码+资源合集

    C++(c plus plus)是一种计算机高级程序设计语言,由C语言扩展升级而产生 ,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的...

    Visual C++ 编程实例

    Visual C++ 编程实例,VS2003编译, 包含图像处理的学习资源,希望对大家有用。特别致歉:这是C++的程序,由于是在.NTE环境下写的,所以开始误认为C#,对大家造成的不便,我感到十分抱歉。

    C++程序设计语言_特别版.part4

    他如此评价自己的这本作品:“要学习C++语言和程序设计,要将C++应用于程序设计实践,本书自然是必读之书。这个‘特别版’以标准化的C++语言为基础,讨论了C++的各种语言特征和有效使用这一语言的程序设计技术。书中...

Global site tag (gtag.js) - Google Analytics