标准 C 函数

标准 C 运行时库既包含 Unicode UTF-16 (宽字符) 可用于 Unicode 的字符串函数版本,又包含可与 单字节字符集 (SBCSs) 字符一起使用的面向字节的字符串函数版本。 Unicode 数据类型 WCHAR 与 ANSI C 中的数据类型wchar_t兼容,并允许访问 Unicode 字符串函数。 函数的 Unicode 版本以字母“wcs” (开头,有时以“_wcs”) 开头。 用于代码页的数据类型 CHAR 与 ANSI C 中的字符数据类型 char 兼容,以允许访问字符串函数。 函数的字符版本以字母“str”开头。 (DBCSs) 还有以字母“_mbs”开头的 双字节字符集 的特殊版本。

标准 C 运行时库包括所有标准 C 字符串函数的泛型函数。 它们以“_tcs”开头,并列在 Tchar.h 头文件中。 这些函数使用泛型 TCHAR 数据类型。

应用程序必须添加以下行才能使用泛型函数并编译 Unicode。

#define _UNICODE

#include <tchar.h>
#include <wchar.h>

请注意,需要 Tchar.h 和 Wchar.h 文件,并且还需要_UNICODE变量上的前导下划线。 此命名特定于标准 C 库。 不带下划线呈现的“UNICODE”适用于 Microsoft Windows 运行时。

wcstombsmbstowcs 函数可以从标准 C 库支持的字符集转换为 Unicode 并返回,但存在一些限制。 有关将字符串转换为 Unicode 和从 Unicode 转换的详细信息,请参阅 字符串类型之间的转换

Tchar.h 中定义的 printf 函数支持与 Strsafe.h 打印函数相同的格式规范,例如 StringCbPrintf。 同样,Tchar.h 定义 wprintf 函数,其中格式字符串本身是 Unicode 字符串。

注意

不良的缓冲区处理与许多涉及缓冲区溢出的安全问题有关。 请参阅 Strsafe.h 参考。 Strsafe.h 中定义的函数提供额外的处理,以便在代码中正确处理缓冲区。 它们旨在替换其内置的 C/C++ 对应项以及特定的 Microsoft Windows 实现。 有关详细信息,请参阅 安全注意事项:国际功能

 

Windows API 中的 Unicode