C++中的Unicode编码:wchar, UTF-8,UTF-16,UTF-32

2023-11-12

C++在C11标准中加入了对Unicode编码的支持,新增了wchar_t、char16_t、char32_t内置数据类型。

    cout << sizeof(char) << endl;
    cout << sizeof(wchar_t) << endl;
    cout << sizeof(char16_t) << endl;
    cout << sizeof(char32_t) << endl;
1
2
3
4
经以上代码测试,这三个数据类型的大小为:1、4、2、4字节(Ubuntu X64环境下);

char:标准ASCII字符,大小为1字节(8bit),可以存储UTF-8编码字符 
wchar_t:变宽字符,大小根据操作系统环境而定(据我所知Windows下是2字节(16位),Linux下是4字节(32位)) 
char16_t:16位长字符,可以存储UTF-16编码字符 
char32_t:32位长字符,可以存储UTF-32编码字符

让这些字符表示相应的字符串,则为:

    wchar_t wstr[] = L"我是宽字符常量";
    char u8str[] = u8"我是UTF-8";
    char16_t u16str[] = u"我是UTF16";
    char32_t u32str[] = U"我是UTF32";
1
2
3
4
其中: 
L为变宽字符串\字符的前缀 
u8为UTF-8编码字符串\字符的前缀 
u为UTF-16编码字符串\字符的前缀 
U为UTF-32编码字符串\字符的前缀

在标准模板库中也有相应的string实现:

    typedef basic_string<char> string;
    typedef basic_string<char16_t> u16string;
    typedef basic_string<char32_t> u32string;
1
2
3
实现举例:

    wstring wstrr(L"我是宽字符字符串");
    string u8strr(u8"我是UTF8");
    u16string u16strr(u"我是UTF16");
    u32string u32strr(U"我是UTF32");
1
2
3
4
不过经验证,wstring、u16string、u32string并没有重载 << 、>>等运算符。
--------------------- 
作者:thinkerleo7798 
来源:CSDN 
原文:https://blog.csdn.net/thinkerleo1997/article/details/78534741 
版权声明:本文为博主原创文章,转载请附上博文链接!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++中的Unicode编码:wchar, UTF-8,UTF-16,UTF-32 的相关文章

  • 将 UTF-8 编码的转储加载到 MySQL 中

    昨天我为这个问题苦苦思索了几个小时 我在 MySQL 4 1 22 服务器上有一个数据库 编码设置为 UTF 8 Unicode utf8 如 phpMyAdmin 报告 该数据库中的表的默认字符集设置为latin2 但是 使用它的 Web
  • 如何获得将非 ASCII 字符识别为字母的正则表达式?

    我正在从瑞典语网页中提取信息 此页面使用的字符如下 我的问题是 当我打印信息时 它们就消失了 我正在使用 Beautiful Soup 提取信息 我认为问题在于我对提取的字符串执行了一堆正则表达式 例如location re sub r w
  • 如何让 Mechanize 自动将正文转换为 UTF8?

    我找到了一些解决方案post connect hook and pre connect hook 但似乎它们不起作用 我正在使用最新的 Mechanize 版本 2 1 没有 response 新版本中的字段 我不知道在新版本中从哪里获取它
  • 协议缓冲区和 UTF-8

    编码方案 多操作系统和 Endian nes 的历史导致了对所有形式的字符串数据 即所有字母表 进行编码方面的混乱 因此 协议缓冲区仅处理其字符串类型中的 ASCII 或 UTF 8 并且我看不到任何接受 C wstring 的多态重载 那
  • 同一个字符可以有 2 种不同的 UTF-8 编码吗?

    我正在编写一个应用程序 需要将其输入从 UTF 8 转码为 ISO 8859 1 Latin 1 一切正常 除了有时我会得到一些变音字符的奇怪编码 例如 带有 2 个点的拉丁语 1 E 0xEB 通常为 UTF 8 0xC3 0xAB 但有
  • 如何处理 R 包中具有 UTF-8 标记字符串的示例数据

    我想包括一个示例数据集 Twitter推文和metadata in an R我正在写的包 我使用下载了一个示例 data frameTwitter API并将其另存为 RData 与相应的 R数据描述文件 在我的包中 当我跑步时R CMD检
  • Delphi 2009之前如何处理UTF-8和ANSI转换?

    在 Delphi 2009 中 我们有 RichEdit1 Lines LoadFromFile OpenDialog1 FileName TEncoding UTF8 RichEdit1 Lines SaveToFile OpenDial
  • python 解码部分 utf-8 字节数组

    我从不了解 UTF 8 规则的通道获取数据 因此 有时当 UTF 8 使用多个字节来编码一个字符并且我尝试将部分接收到的数据转换为文本时 我在转换过程中遇到错误 根据接口的性质 没有任何结束的流 我无法找出数据何时已满 因此我需要处理部分
  • 在python 2.7中打印阿拉伯/波斯字母[重复]

    这个问题在这里已经有答案了 在下面的代码中 Python 似乎不支持阿拉伯字母 有任何想法吗 usr bin python coding utf 8 import nltk sentence tokens nltk word tokeniz
  • 阿拉伯语的 tcpdf 将字符显示为问号 '?????? ???'

    我想创建一个阿拉伯语 pdf 与我的 ms Execl 格式的文件相同 在 php 中使用 tcpdf 创建 pdf 时 阿拉伯字符显示为 分数 这些字符是从我的 Excel 文件中复制的 htmlcontent2 span color 0
  • 如何让 XSLT 在 Java 中返回 UTF-8

    我正在尝试让我的 XSL 脚本使用 UTF 8 编码 像 和希腊字符这样的字符就像垃圾一样出现 让它工作的唯一方法是将结果写入文件 如果我将它写入输出流 它只会返回垃圾 System out 有效 但这可能是因为它被重定向到文件 结果需要从
  • Python UTF-8转换问题

    在我的数据库中 我存储了一些 UTF 8 字符 例如 名称 字段中的 通过 Django ORM 当我读到这个时 我得到了类似的东西 gt gt gt p name u xce xb1 gt gt gt print p name 我本来希望
  • 从 django 返回带有 BOM 的 UTF-8 编码的 csv

    我正在尝试输出一个用户可以用 Excel 打开的 CSV 文件 我已经用 UTF 8 编码了所有字符串 但是当我用 Excel 打开文件时 我看到了乱码 只有在将文件转换为带 BOM 的 UTF 8 在 Windows 上使用 notepa
  • 将传入字符串的 unicode 表示形式转换为 UTF-8?

    我正在读取一些已经转换为 html 样式 代码的数据 我现在需要将其转换回 UTF 8 字符以供查看 不幸的是我无法使用浏览器查看该字符串 我读过有关 java 中的转换的内容 似乎如果你有一个 uxxxx 字符串 那么编译器会为你转换 然
  • 为什么 Mac OS 上的 C 运行时允许预组合和分解的 UTF-8?

    所以我们都知道 Mac OS 上的文件系统具有使用完全分解的 UTF 8 的古怪功能 如果您调用 POSIX API 例如realpath 例如 您将从 Mac OS 返回这样一个完全分解的 UTF 8 字符串 当使用像这样的 API 时f
  • Rails 3.1、Ruby 1.9.2-p180 和 UTF-8 问题

    我在使用 UTF 8 字符时遇到一些问题 这是 db seeds rb User create username eml first name last name ck email email protected cdn cgi l ema
  • 如何在 R 中的 dygraph 标题中使用 UTF-8 字符

    使用 Rstudio Windows8 当我使用 dygraph 函数绘制时间序列时 在尝试在主标题中使用 UTF 8 字符时遇到问题 library dygraphs dygraph AirPassengers main T tulo 这
  • 如何重载比较器以使用 UTF-8 和不同区域设置进行排序

    我有一个数据集合 Alphabet Zend wiczenia 结果collection sort I get Alphabet Zend wiczenia 如何超载comparator使用 UTF 8 和不同的语言环境进行排序 你需要设置
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • 使用 Ruby 的“open-uri”打开 utf-8 URI 时遇到问题

    我正在尝试使用 ruby 和 open uri 从谷歌地图网络服务 API 获取丹麦位置地址 试图得到丹麦艾勒 http maps googleapis com maps api geocode json address r sensor

随机推荐

  • 正大期货新闻:印度调高了棕榈油以及豆油的进口基础价格

    外媒2月15日消息 周二印度政府发布的声明称 印度调高了棕榈油和豆油的进口基础价格 因为海外价格大幅上涨 毛棕榈油的进口基础价格从1346美元 吨调高到1359美元 吨 33度精炼棕榈油从1368美元调高到1376美元 24度精炼这样从13
  • 5.44 综合案例2.0-矩阵键盘信息输入上传-OLED屏幕

    综合案例2 0 矩阵键盘信息输入上传 OLED屏幕 案例说明 1 应用场景 2 M320矩阵引脚说明 3 接线说明 搭建云平台环境 1 添加设备 2 创建设备类型 3 功能定义 创建物模型 代码 1 更改MQTT信息 测试 案例说明 矩阵键
  • 金九银十如何抱佛脚?2023最新大厂 Java 面试真题合集(附完整答案解析)

    2023 秋招眼看着就要来了 但是离谱的是 很多同学最近才想起来还有秋招这回事 所以纷纷临时抱佛脚 问我有没有什么快速磨枪的方法 我的回答是 有 说起来 临阵磨枪没有比背八股文更靠谱的了 很多人对这个很不屑 呵 背题家罢了 但国内大环境如此
  • QT项目超详细打包教程

    一 将QT项目调成为release模式并运行程序 二 在QT中点击项目 三 复制项目的构建目录 四 进入项目的构建目录 找到release文件并进入 五 在release文件夹下新建一个文件夹 任意起名 六 将release文件夹下生成的可
  • Golang 切片删除指定元素的几种方法

    文章目录 1 截取法 修改原切片 2 拷贝法 不改原切片 3 移位法 修改原切片 3 1 方式一 3 2 方式二 4 性能对比 5 小结 参考文献 Go 并没有提供删除切片元素专用的语法或函数 需要使用切片本身的特性来删除元素 删除切片指定
  • C++中两个栈实现一个队列

    引言 首先看这个标题的时候 需要联想到栈和队列的特点 栈是先进后出 队列是先进先出 假如三个元素1 2 3 将这三个元素依次入栈1后 再将栈1中元素依次出栈放入到栈2中 栈1中只留下最后一个元素1 此时栈2中由两个元素 接下来获取栈1中的栈
  • QT-子线程访问主界面UI控件的有效方法

    引言 当软件需要导入大量数据文本时 若显示控件操作放在主界面UI线程中 会导致在导入数据的过程中存在界面卡死的现象 这种现象在工业控制工况中中是致命的 因此本文章旨在实现非UI子线程对UI主线程的操作 这里举一个简单的Demo 大文本数据通
  • 三款很酷很骚气的底部导航

    早上好 骚年 我是小菜 我的公众号 菜鸟翻身 会推荐 GitHub 上好玩的项目 一分钟 get 一个优秀的开源项目 挖掘开源的价值 欢迎关注我 底部导航栏是 APP 最常用的功能之一 想最初都是自己自定义 ViewGroup 实现 后来
  • PMBOK(第六版) PMP笔记——《第六章 项目进度管理》

    第 6 6 章 项目进度管理 项目进度管理包括为管理项目按时完成所需的各个过程 项目进度计划 Schedule 说明了项目如何以及何时交付项目范围中定义的产品 服务 和成果 创建 WBS 最底层得到的是工作包 但是为了更好的估算活动持续时间
  • SpringAOP学习--SpringAOP简介及原理

    前文对AOP做了介绍 实际项目中 一般不会直接上手手动实现aop 而是使用一些高级封装的aop实现 如SpringAOP Spring是一个广泛应用的框架 SpringAOP则是Spring提供的一个标准易用的aop框架 依托Spring的
  • vue props传Array/Object类型值,子组件报错解决办法(已解决)

    问题 Props with type Object Array must use a factory function to return the default value 1 在vue中如果当在父组件通过props传Array Obje
  • IPv6地址格式简介以及常见的IP地址

    toc 文章目录 1 IPv6地址格式 1 1首选格式 1 2 压缩格式 1 3 内嵌IPv4地址的IPv6 2 常见的IP地址 2 1 128 2 2 1 128 2 3 A B C D 2 4 FFFF A B C D 2 5 fe80
  • ElasticSearch入门学习笔记(2)--------Kibana语法学习

    ElasticSearch的ResultFul风格 基于Rest命令说明 原文链接 基础测试 创建一个索引 put 索引名 类型名 文档id 请求体 可以再head里面看到里面多了一个test1 从下面的图中可以看到本质上就是往里面put了
  • 如何在两个相关泛型类之间创建类似子类型的关系

    本文正在参加 金石计划 瓜分6万现金大奖 哈喽大家好 我是阿Q 事情是这个样子的 对话中的截图如下 看了阿Q的解释 你是否也和 马小跳 一样存在疑问呢 请往 看 我们都知道在java中 只要是类型兼容 就可以将一种类型的对象分配给另一种类型
  • vmware启动报错0xc000007b 解决方式

    1 官网下载vmwre 最新版后安装 2 运行vmwre报错结果如下 解决方法 安装最新版本C 运行库 VisualC2022 64 86 64位操作系统安装VisualC2022 64 86 32未操作系统安装VisualC2022 86
  • 【华为OD统一考试B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • c++中的vector的用法

    参考博客 https blog csdn net msdnwolaile article details 52708144 基本用法 如下代码 include
  • Flutter Image图片显示

    目录 参数详解 代码示例 效果图 完整代码 使用资源图片前必做两个步骤 1 在根目录下创建子目录 子目录中创建2 0x和3 0x 也可以创建4 0x 5 0x 但是2 0和3 0是必须的 目录 在对应目录中添加对应分辨率图片 图1 2 打开
  • 2020笔记本性价比之王_2020十大笔记本电脑性价比排行(最新笔记本电脑推荐)...

    2020十大笔记本电脑性价比排行 最新笔记本电脑推荐 1 HP 惠普 战99 15 6英寸笔记本电脑 2 Acer 宏碁 墨舞P50 15 6英寸笔记本电脑 3 HONOR 荣耀 MagicBook Pro 16 1英寸笔记本电脑 4 AS
  • C++中的Unicode编码:wchar, UTF-8,UTF-16,UTF-32

    C 在C11标准中加入了对Unicode编码的支持 新增了wchar t char16 t char32 t内置数据类型 cout lt lt sizeof char lt lt endl cout lt lt sizeof wchar t