vc 中的_T()是什么作用?

作者&投稿:寿娥 (若有异议请与网页底部的电邮联系)
vc 中的_T()是什么作用?~

_T("")是一个宏,定义于tchar.h文件中。作用是将字符串转换为Unicode编码。

在C语言中普通的字符串使用ANSI进行文字处理。也就是常见的双引号字符串。但是由于数据类型的局限性,ANSI的字符串不能保存全部语言。比如说中文。

例如:char *str = "ABC";

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。可以保存中文等。可以使用_T("ABC")或者L"ABC"的方式表示UNICODE编码。

_T()和L也存在区别。
L是一定使用UNICODE进行编码。
_T()会根据编译条件的设置,选择不同的编码格式。

  字符串前面加L表示该字符串是Unicode字符串。
  _T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual

  C++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。

  因此,当你在VS2005/VS2008下进行写C++(MFC程序时)最好应用_T;而在VS2010等下直接用L吧!

_T("")是一个宏,定义于tchar.h文件中。作用是将字符串转换为Unicode编码。

在C语言中普通的字符串使用ANSI进行文字处理。也就是常见的双引号字符串。但是由于数据类型的局限性,ANSI的字符串不能保存全部语言。比如说中文。

例如:char *str = "ABC";

Unicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。可以保存中文等。可以使用_T("ABC")或者L"ABC"的方式表示UNICODE编码。

_T()和L也存在区别。
L是一定使用UNICODE进行编码。
_T()会根据编译条件的设置,选择不同的编码格式。


殷都区18950839103: VC中关于 - T数据类型的用处 -
锁耍谷丙: _T这个宏不是无效的,这个宏用于处理字符串,比如你有一个字符串“aaaaaaa啊啊”,有中文也有英文,如果不用_T的话程序就只能被编译成多字节字符集,这样的字符集在某些操作系统上会出现乱码情况,特别是字符串中有中文,而运行程序的操作系统不支持中文的时候. 使用_T的好处在于可以自动转换字符串类型,如果你需要一个Unicode字符集版本的程序,你只需要改变程序的编译属性就可以了,不需要改源代码,不用_T的话你改了编译属性以后还得再每个字符串前面加个L才能正确编译通过.

殷都区18950839103: Vc中 - T 的用法 -
锁耍谷丙: _T是个宏.就是把ASCII变成宽字符集里的字.ASCII一个字符占1个字节.宽字符集里一个字占2个字节.和国际化有关.请看第二章.里面有很细的解释.我就不多说了.

殷都区18950839103: C++语言中“ - T”是什么意思? -
锁耍谷丙: Visual C++里边定义字符串的时候,用_T来保证兼容性,VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改.如果将来你不打算升级到unicode,那么也不需要_T,

殷都区18950839103: Vc++中的 - T(""),高手来看看,帮忙解答!!谢谢! -
锁耍谷丙: 这是为了兼容不同的文本编码 _T()宏会根据工程配置将字符串自动转换为多字符编码或者unicode编码 如果你当前的工程是unicode编码 m_company="" 这样会报错的.

殷都区18950839103: VC里面TEXT()是什么和 - T有什么区别 -
锁耍谷丙: 两个都是宏定义,TEXT()定义在winnt.h里,_T()定义在tchar.h里,但作用是一样的,都是用来生成宽字符串文字量.例如:"abcd"是char型字符串,而TEXT("abcd")或_T("abcd")则是wchar_t型字符串(wchar_t实际就是unsigned short).

殷都区18950839103: VC中为什么对字符串变量赋值要用T(""); -
锁耍谷丙: 以前的VC使用的是ANSI(ASCII)对字符串进行处理,后来使用Unicode对字符串进行处理.就比如过去用char,现在用wchar.使用Unicode主要是为了适应国际化程序的实现,使用2字节来存储1个字符._T的作用就是将ANSI的字符串转成Unicode的字符串.

殷都区18950839103: 在vc中宏的作用是什么? -
锁耍谷丙: _T使得编译器会根据编译目标环境选择合适的(Unicode还是ANSI)字符处理方式.原型类似:#ifdef _UNICODE/* * Enclose constant strings and literal characters in the _T macro to make * them unicode constant strings when _UNICODE is ...

殷都区18950839103: VC++中L和 - T是什么? -
锁耍谷丙: L"hello, world" 这个字符串保存的是wchar的 _T"hello, world" 如果工程定义的UNICDE则这个字符串是按wchar方式保存的,如果没有定义则是按char方式保存的

殷都区18950839103: vc中 定义字符串 - T("aaaa")与"aaaa"有什么不同 -
锁耍谷丙: _T("")是一个宏,他的作用是让你的程序支持Unicode编码 因为Windows使用两种字符集ANSI和UNICODE, 前者就是通常使用的单字节方式, 但这种方式处理象中文这样的双字节字符不方便, 容易出现半个汉字的情况. 而后者是双字节方式,方便处理双字节字符.Windows NT的所有与字符有关的函数都提供两种方式的版本,而Windows 9x只支持ANSI方式. 如果你编译一个程序为ANSI方式, _T实际不起任何作用. 而如果编译一个程序为UNICODE方式,则编译器会把"Hello"字符串以UNICODE方式保存._T和_L的区别在于,_L不管你是以什么方式编译,一律以UNICODE方式保存.

殷都区18950839103: VC++ 中 m - Name = - T( '''');什么意思 -
锁耍谷丙: 1. m_Name = _T(" **** ");是给变量m_Name赋值 2._T("")是一个宏,它的作用是如果定义了Unicode则后面的字符串是Unicode编码,如果没有定义则是ANSI编码; 3.Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求;不同的国家和地区制定了不同的标准,由此产生了 GB2312、GBK、Big5、Shift_JIS 等各自的编码标准.这些使用 1 至 4 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网