_T在CString中代表什么

Cod*_*der 30 c++ unicode cstring

"T"在字符串中表示什么.例如_T("Hello").我在需要unicode支持的项目中看到了这个.它实际告诉处理器的是什么

MvG*_*MvG 31

_T代表"文本".当且仅当您使用Unicode支持编译源时,它才会将您的文字转换为Unicode宽字符文字.请参阅http://msdn.microsoft.com/en-us/library/c426s321.aspx.

  • 从技术上讲,`_T()`仅用于C运行时库,用于`_TCHAR`数据类型.Win32等价物是用于`TCHAR`数据类型的`TEXT()`宏.根据在编译期间是否定义了`_UNICODE`和`UNICODE`,两者都映射到`char`或`wchar_t`.两者通常被定义/未定义在一起,因此许多人倾向于交换它们并且通常起作用.但它们在逻辑上是*分开的,*应该*相应地对待.在C函数中使用`_TCHAR`和`_T()`.在Win32 API中使用`TCHAR`和`TEXT()`. (6认同)

Ton*_*ion 14

来自MSDN:

使用_T宏来一般编码文字字符串,因此它们在Unicode下编译为Unicode字符串或在没有Unicode的情况下编译为ANSI字符串(包括MBCS)


joh*_*ohn 13

它实际上用于需要Unicode ANSI支持的项目.它告诉编译器将字符串文字编译为Unicode或ANSI,具体取决于预编译器定义的值.

为什么你想要这样做是另一回事.如果您想单独支持Unicode,那么只需编写Unicode,在本例中L"Hello".在_T()当你需要支持Windows NT和更高版本(支持Unicode)的和Windows 9X/ME(不)加入宏.目前,使用这些宏的任何代码都已过时,因为所有现代Windows版本都是基于Unicode的.


JC *_* Ju 5

它代表文本。使用IDE工具可以查看定义:

#define _TEXT(x)    __T(x)
Run Code Online (Sandbox Code Playgroud)

但我想将其记为“Transformable”或“swi-T-ch”:

L"Hello"  //change "Hello" string into UNICODE mode, in any case;

_T("Hello") //if defined UNICODE, change "Hello" into UNICODE; otherwise, keep it in ANSI.
Run Code Online (Sandbox Code Playgroud)