char 与 wchar_t

char 叫多字节字符,一个 char 占一个字节,之所以叫多字节字符是因为它表示一个字时可能是一个字节也可能是多个字节。

char ch1 = 's';             // 正确
char ch2 = '中';             // 错误,一个 char 不能完整存放一个汉字信息
char str[4] = "中";          //前三个字节存放汉字'中',最后一个字节存放字符串结束符\0

wchar_t 被称为宽字符,一个 wchar_t 占 2 个字节。之所以叫宽字符是因为所有的字都要用两个字节(即一个 wchar_t)来表示。

 wchar_t wch1 = L's';            // 正确
 wchar_t wch2 = L'中';            // 正确,一个汉字用一个 wchar_t 表示
 wchar_t wstr[2] = L"中";         // 前两个字节(前一个 wchar_t)存放汉字'中',最后两个字节(后一个 wchar_t)存放字符串结束符\0
 wchar_t wstr2[3] = L"中国";

说明

  1. 用常量字符给 wchar_t 变量赋值时,前面要加 L 。如: wchar_t wch2 = L’中’;

  2. 用常量字符串给 wchar_t 数组赋值时,前面要加 L 。如: wchar_t wstr2[3] = L”中国”;

  3. 如果不加 L ,对于英文可以正常,但对于非英文(如中文)会出错。



ps:摘自网络