|
r字符类型取值范围有限,只能用来表示有限的ANSCII字符表中的字符,包括常见的字母字符和控制字符等。而如果要表示更大范围内的字符,比如上面例子中的‘陕’这个中文字符,char就显得鞭长莫及了。为了弥补char类型的不足,C++提供了另外一种字符数据类型wchar_t,它占用2个字节的内存空间,取值范围更广,因而可以表示更大范围的字符,当然也包括中文字符了。例如,可以通过下面的方式来输出一个中文字符。不过这里需要注意的是,因为我们的代码中有扩展的中文字符,所以要求我们的代码文件使用UTF-8的编码格式进行保存。
?
复制代码
// 定义一个wchar_t类型字符变量
// 并用一个中文字符对其赋值
wchar_t cChs = L'曾';
// 设置wcout输出对象的区域并输出中文字符
wcout.imbue ( locale ( "chs" ) );
wcout<
复制代码
这里值得提醒的是,字符常量或字符串常量前面的L前缀,表示对这里的字符或字符串采用wide-character字符集(宽字符集,通常是UNICODE字符集)对其进行编码。而如果不使用L前缀,则表示使用multibyte-character字符集(多字节字符集)对其进行编码。所以,如果我们要用某个字符或字符串常量对一个宽字符(wchar_t)或宽字符串(wstring)变量进行初始化或赋值时,我们应该在这个字符或字符串常量前加上L前缀。反之,如果是对char和string类型的变量进行初始化或赋值时,则不需要添加L前缀
|