Unicode的大多数字符串操作都可以通过使用与处理Windows ANSI字符集相同的逻辑来写入,除了基本操作单元是16位字符而不是8位字节。头文件提供了许多类型定义,可以轻松创建可以为Unicode或ANSI字符集编译的源。
以下示例显示了Win32头文件中用于定义三组数据类型的方法:可以为ANSI或Unicode编译的一组通用类型定义以及两组特定类型定义。第一组特定类型定义用于现有的Windows(ANSI)字符集,另一个用于Unicode(或宽)字符。
/ *通用类型* /
Points to a null-terminated string that specifies the default data type for a printer.
typedef wchar_t TCHAR;
#其他
typedef unsigned char TCHAR;
#万一
typedef TCHAR * LPTSTR, *LPTCH;
/ * 8位字符特定* /
typedef unsigned char CHAR;
typedef CHAR *LPSTR, *LPCH;
/ * Unicode特定(宽字符)* /
typedef unsigned wchar_t WCHAR;
typedef WCHAR *LPWSTR, *LPWCH;
类型定义之前的字母【T】指定可以为ANSI或Unicode编译的通用类型。类型定义之前的字母【W】指定宽字符(Unicode)类型。有关此方法的实际实现,请参阅WINNT.H头文件。
使用通用数据类型的应用程序可以通过在头文件的include语句之前定义UNICODE来编译Unicode。要编译ANSI的代码,请省略UNICODE定义。
鼓励开发人员使用通用数据类型,但对于需要混合型控制的应用程序,存在特定类型。