C++ T在CString中代表什么
“T”在字符串中表示什么。例如,我在需要unicode支持的项目中看到了这一点。它实际上从MSDN告诉处理器什么: 使用C++ T在CString中代表什么,c++,unicode,cstring,C++,Unicode,Cstring,“T”在字符串中表示什么。例如,我在需要unicode支持的项目中看到了这一点。它实际上从MSDN告诉处理器什么: 使用\u T宏对文字字符串进行常规编码,使其在Unicode下编译为Unicode字符串,或在不使用Unicode的情况下编译为ANSI字符串(包括MBC) \T代表“文本”。当且仅当您使用Unicode支持编译源代码时,它才会将文本转换为Unicode范围的字符文本。请参阅。它实际上用于需要Unicode和ANSI支持的项目。它告诉编译器根据预编译器定义的值将字符串文本编译为Un
\u T
宏对文字字符串进行常规编码,使其在Unicode下编译为Unicode字符串,或在不使用Unicode的情况下编译为ANSI字符串(包括MBC)
\T
代表“文本”。当且仅当您使用Unicode支持编译源代码时,它才会将文本转换为Unicode范围的字符文本。请参阅。它实际上用于需要Unicode和ANSI支持的项目。它告诉编译器根据预编译器定义的值将字符串文本编译为Unicode或ANSI
你为什么要这样做是另一回事。如果您想单独支持Unicode,那么只需编写Unicode,在本例中是
L“Hello”
。当您需要支持Windows NT及更高版本(支持Unicode)和Windows 9x/ME(不支持Unicode)时,添加了\u T()
宏。现在,任何使用这些宏的代码都已过时,因为所有现代Windows版本都是基于Unicode的。它代表文本。您可以在使用IDE工具时查看定义:
#define _TEXT(x) __T(x)
但我想把它记住为“可转换的”,或“swi-T-ch”:
从技术上讲,
\u T()
仅用于C运行时库,用于\u TCHAR
数据类型。Win32等效程序是用于TCHAR
数据类型的TEXT()
宏。根据编译期间是否分别定义了\u UNICODE
和UNICODE
,这两种代码都映射到char
或wchar\u t
。两者通常一起定义/不定义,因此许多人倾向于交换它们,而事情通常都是有效的。但它们在逻辑上是分开的,应该相应地加以处理。将\u TCHAR
和\u T()
与C函数一起使用。在Win32 API中使用TCHAR
和TEXT()CString
是在CRT和Windows API方面实现的。根据文档:“CString基于TCHAR
数据类型”,因此使用TEXT()
。
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.