Unicode与ANSIC

unicode字符的数据类型
type unsigned short wchar_t
如定义99个字符为unicode的字符串和一个0结尾
wchar_t szbuffer[100]
unicode与ANSIC 函数的对照
char * strcat(char *,const char*);
wchar_t *wcscat(wchar_t*,const wchar_t*);

int strcmp(const char*,const char *);
int wcscmp(const wchar_t*,const wchar_t*);

char * strcpy(char *,const char*);
wchar_t * wcscpy(wchar_t*,const wchar_t*);
若要定义一个A N S I / U n i c o d e通用的字符串数组,请使用下面的T C H A R数据类型。如果定
义了_ U N I C O D E,T C H A R将声明为下面的形式:
typedef wchar_t TCHAR
如果没有定义_ U N I C O D E,则T C H A R将声明为下面的形式:
typedef char TCHAR
使用该数据类型,可以像下面这样分配一个字符串:

TCHAR szstring[100];
也可以创建对字符串的指针:

TCHAR szstring="ERROR"
不过上面这行代码存在一个问题。按照默认设置, M i c r o s o f t公司的C + +编译器能够编译所
有的字符串,就像它们是A N S I字符串,而不是U n i c o d e字符串。因此,如果没有定义
_ U N I C O D E,该编译器将能正确地编译这一行代码。但是,如果定义了_ U N I C O D E,就会产生
一个错误。若要生成一个U n i c o d e字符串而不是A N S I字符串,必须将该代码行改写为下面的样
子:

TCHAR szstring=L"ERROR";
字符串(literal string)前面的大写字母L,用于告诉编译器该字符串应该作为U n i c o d e字符
串来编译。

原文地址:https://www.cnblogs.com/tianlangshu/p/1989499.html