• 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 plain copy
    1. #include<iostream>  
    2. using namespace std;  
    3. locale loc("chs");  
    4. int main()  
    5. {  
    6.  wchar_t wStr[] = L"我使用了wcha_t类型";  
    7.  wcout.imbue(loc);  
    8.  wcout << wStr << endl;  
    9.  return 0;  
    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














    种一棵树最好的时间是十年前,其次是现在。
  • 相关阅读:
    博客园样式设置
    最坏情况为线性时间的选择算法
    棋盘覆盖
    矩阵乘法的Strassen算法及时间复杂度
    大整数乘法及算法时间复杂度
    全排列问题的递归算法(Perm)
    python的lambda
    python的zip函数
    python操作队列
    mysql基础命令
  • 原文地址:https://www.cnblogs.com/islch/p/12569342.html
Copyright © 2020-2023  润新知