转载自 http://blog.csdn.net/lishuzhai/article/details/50595498
wchar_t:wchar_t是初学C/C++的筒子们不经常用到的类型。
首先说一下
什么是wcha_t:
wchar_t是C/C++的字符类型,是一种扩展的存储方式,主要用在国际化程序的实现中。
wchar_t 存在的原因:
char是八位字符类型,最多能包含256中字符,许多的外文字符集所包含的字符数目超过256个,char型不能表示。
wchar_t数据大小:
数据类型一般为16或者32位,不同的C/C++库有不同的规定。总之:wchar_t所能表示的字符远远多于char类型。
wchar_t的输入输出处理:
cin和cout将输入和输出看作是char流,因此不适合用于处理wchat类型,iostream头文件提供了wcin 和wcout用于处理输入输出流另外可以通过加上前缀L来只是宽字符常量和宽字符串
代码示例:
关于此代码中的local,(系统区域设置,即国家或者地区设置),是用来决定当前所使用的当前语言编码,日期格式,数字格式,等有关的设置,
大家可以看下这篇博客就懂了,http://blog.csdn.net/haiross/article/details/45074355
char16_t和char32_t:
产生原因:
随着编程人员日益的熟悉Unicode,,类型wchar_t显然已经满足不了需求,在计算机系统上进行的编码字符和字符串编码时,仅仅使用Unicode码点显然是不够的,
比如:如果在进行字符串编码时,如果有特定长度和符号特征的类型将很有帮助,而类型wchar_t的长度和符号特征随实现而已,因此C++11新增了类型char16_t,,char32_t。
char16_t:无符号类型,长16位,
char32_t无符号类型,长32位
C++11使用前缀u表示char16_t字符常量和字符串常量如:u‘L’;u“lilili”;
C++11使用前缀U表示char32_t字符常量和字符串常量如:U'L';U"lilili";
类型char16_t与/u00F6形式的通用字符名匹配,
类型char32_t与/U0000222B形式的通用字符名匹配。
前缀u和U分别指出字符字面值的类型为char16_t和char32_t。
注意:
如果你在VS中使用char16_t或者char32_t的话,不要加前缀u或者U只能加前缀L.
至于L还是u前缀的问题..属于厂商自定义.这个标准没有确定死的.毕竟这只是厂商实现的辅助字符转换的功能,而不是特定语法.
如果有疑问的话可以看这个:
http://zhidao.baidu.com/question/688079505010448284.html?qbl=relate_question_2&word=char16_t%BA%CDchar