在介绍wchar_t前,先简单说明一下基本字符集和扩展字符集。
基本字符集:
C++实现支持的基本字符集,其中包括有基本的源字符集和基本的执行字符集。基本的源字符集表示的是可用来编写源代码的字符集,由常用字符的大小写,数字和C语言中使用的符号以及其他一些字符组成。基本的执行字符集,它包括在程序执行期间可处理的字符(如可从文件中读取或显示到屏幕上的字符)。它还增加了一些字符,如退格和振铃。
扩展字符集:
C++标准还允许实现提供扩展源字符集和扩展执行字符集。因不同的实现而异。
wcha_t
char一般用一个8位的字节表示,但程序需要处理的字符集可能无法用一个8位的字节表示。对于这种情况,C++的处理方式有两种。首先,如果大型字符集是实现的基本字符集,则编译器厂商可以将char定义为一个16位的字节或更长的字节。其次,一种实现可以同时支持一个小型基本字符集和一个较大的扩展字符集。8位char可以表示基本字符集,另一种类型wchar_t可以表示扩展字符集。cin和cout将输入和输出看作是char流,因此不适于用来处理wchar_t类型。iostream提供了类似的工具wcin和wcout,可以用来处理wchar_t流。可以通过加上前缀'L'来指示宽字符常量和宽字符串。
wchar_t t=L'A';
wcout<<L"tall"<<endl<<t<<endl;
char16_t和char32_t
这是C++11新增的类型。其中char16_t是无符号的,长16位。char32_t也是无符号的,但长32位。使用前缀u表示char16_t常量,使用前缀U表示char32_t常量。