C++:wchar_t 和C++新增类型:char16_t char32_t

转载自 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来只是宽字符常量和宽字符串


代码示例:

[cpp] view plaincopy
1. #include
2. usingnamespacestd;
3. locale loc("chs");
4. intmain()
5. {
6. wchar_twStr[] = L"我使用了wcha_t类型";
7. wcout.imbue(loc);
8. wcout << wStr << endl;
9. return0;
10. }




关于此代码中的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




原文链接: https://www.cnblogs.com/islch/p/12569342.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/237953

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 下午5:36
下一篇 2023年2月13日 下午5:36

相关推荐