转到用于C++索引的Unicode
_C++Builder中的TCHAR映射旨在使编写可用于宽字符串或窄字符串的源代码更加容易。您可以将_TCHAR映射到wchar_t型
或烧焦
以便代码使用所需的正确字符串类型RAD Studio框架和库或Windows API,因此RTL公司函数浮动到正确的定义(分别为宽或窄)。要设置_TCHAR映射到选项,使用项目>选项>C++(共享选项)对话框。
您的C++应用程序需要处理宽字符串和窄字符串:
- C++RTL包含为这两者设计的例程
烧焦
和wchar_t型
.
- Windows API通常很窄,需要
烧焦
.
- RAD Studio框架和库使用宽字符串数据(Unicode),需要
wchar_t型
.
在与RAD Studio框架和库交互时,您需要使用广泛的RTL函数,或者在将数据传递到RAD Studio架构和库之前进行适当的转换。(请参见UTF-8转换例程.)
_沙皇在tchar.h头文件中有条件声明的,定义为类型定义(别名)映射到烧焦
或至wchar_t型
。当您想要编写可移植代码(可以与C++RTL、Windows API和RAD Studio框架和库交互)时,应该使用_TCHAR公司(而不是硬编码烧焦
或wchar_t型
数据类型)。然后可以将_TCHAR映射选项调整为烧焦
或wchar_t型
(位于C++(共享选项)第页)。例如,当前的_TCHAR映射设置控制应用程序是使用ANSI版本还是广泛版本的RTL浮点函数.
“_TCHAR映射到”选项
项目选项_TCHAR映射到控制的浮动定义_TCHAR公司
在代码中。
_TCHAR公司
可以映射或浮动到烧焦
或wchar_t型
,如下表所示:
“_TCHAR映射到”选项的值:
烧焦
|
替代品烧焦 对于_TCHAR公司 .注:此选项不适用于标准库和API函数的广泛定义。
|
wchar_t型
|
- 替代品
wchar_t型 对于_TCHAR公司 .
- 设置两个
联合编码 和_联合编码 宏常量。
- 浮动到标准库和API函数的广泛定义。
|
在“目录和条件”页面上设置“_TCHAR映射到”选项
使用 项目>选项>C++(共享选项) 对话框。
使用“_TCHAR映射到”wchar_t型
RAD Studio框架和库
RAD Studio框架和库是用Unicode实现的,并且总是期望使用Unicode。默认情况下,_TCHAR映射到wchar_t型
.
例如,除非将“_TCHAR maps to”选项设置为,否则以下代码不会编译wchar_t型
:
TResourceStream*res=新TResourceStream(HInstance,ResourceId,RT_RCDATA);
如果“_TCHAR映射到”选项设置为烧焦,RT_RCDATA
映射到字符*
. RAD Studio框架和库预期wchar_t型*
,所以烧焦如果您想使用RAD Studio框架和库,则设置是一个问题。
与一起使用“_TCHAR maps to”所需的代码更改wchar_t型
当_TCHAR映射到wchar_t型
(默认设置),您的项目必须有一个名为_特曼
或_tWinMain(WinMain)
。默认情况下,使用C++Builder创建的新项目具有这些入口点,但对于导入的项目,您可能需要手动添加这些入口点。
您还必须包括查尔。小时头文件,其中包含浮动定义和所需的入口点。有关tchar.h中包含的浮动函数的列表,请参阅浮动函数.
注:如果,而不是使用_特曼
,您使用主要的
作为入口点,链接器无法链接可执行文件。对于使用RAD Studio框架和库的新项目,向导会自动插入_特曼
入口点。
使用_文本
文本文字前的宏
要确保字符和字符串文字正确浮动到ANSI或Unicode,请使用_文本
宏或_T型
宏。例如:
::MessageBox(0,_TEXT(“消息”),_TEXT[“标题”),MB_OK);
使用_联合编码已定义_文本
(或_吨
)宏将文字字符串(字符)转换为L前缀形式;否则,_文本
在不使用L(左)
前缀。例如,如果您定义_联合编码,然后
_文本(“消息”)
转换为L前缀形式:
L“消息”
否则,此宏将在不使用L(左)
前缀:
“消息”
另请参见