支持 Unicode

Unicode 是支持所有字符集(包括无法以单个字节表示的字符集)的规范。 为国际市场编程时应考虑使用 Unicode 或多字节字符集 (MBCS),或使程序能够通过更改开关来生成支持两种字符集之一的程序。

宽字符是双字节多语言字符代码。 在当今的全球计算业内使用的大多数字符(包括技术符号和特殊的发布字符),都可以根据 Unicode 规范表示为宽字符形式。 无法以 1 个宽字符表示的字符可以通过 Unicode 的代理项功能以 Unicode 对表示。 由于每个宽字符总是以固定的 16 位大小表示,因此使用宽字符可以简化使用国际字符集进行的编程。

宽字符字符串表示为一个 wchar_t[] 数组并由 wchar_t* 指针指向它。 可以通过用字母 L 作为字符的前缀将任何 ASCII 字符表示为宽字符形式。 例如,L'\0' 是终止宽(16 位)NULL 字符。 同样,可以通过用字母 L 作为 ASCII 字符串的前缀 (L"Hello") 将任何 ASCII 字符串表示为宽字符字符串形式。

通常,宽字符在内存中占用的空间比多字节字符多,但处理速度更快。 另外,在多字节编码中一次只能表示一个区域设置,而世界上的所有字符集都同时以 Unicode 表示形式表示。

除数据库类外,MFC 框架完全支持 Unicode。 (ODBC 不支持 Unicode。)MFC 通过始终使用可移植的宏来实现对 Unicode 的支持,如下表所示:

MFC 中的可移植数据类型

不可移植的数据类型

由该宏替换

char

_TCHAR

char*, LPSTR(Win32 数据类型)

LPTSTR

const char*, LPCSTR(Win32 数据类型)

LPCTSTR

CString 类使用 _TCHAR 作为基,并提供构造函数和运算符以方便转换。 可以通过使用与处理 Windows ANSI 字符集相同的逻辑来编写大多数 Unicode 的字符串操作(只是基本操作单位是 16 位字符,而非 8 位字节)。 与使用多字节字符集 (MBCS) 不同,不必(也不应)将 Unicode 字符视为两个不同的字节。

您希望做什么?

请参见

概念

C++ 中的字符集

支持使用 wmain