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 的相关文章

  • 经典的asp字符编码

    我在经典 asp 网站中遇到西班牙字符问题 用户可以在 aspx 页面上的表单中提交他们的姓名 地址 然后 aspx 页面将 ajax post 发送到经典的 asp 页面 它所做的所有操作都存储在我们的 Sql 2008 DB 中 我可以
  • 如何在 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 和不同的语言环境进行排序 你需要设置
  • 表情符号未正确保存在 mongodb 中

    我正在将 Twitter 和 Instagram 上的表情符号保存到我的 mongodb 数据库中 但是当我显示从数据库中提取的数据时 表情符号看起来像这样破损了 在将数据保存到 mongodb 期间我需要做一些不同的事情吗 我是 mong
  • 将 url 从 utf-8 编码重新编码为 iso-8859-1 编码

    我有 file 链接 其中包含非英语字符 这些字符以 UTF 8 进行 UrlEncoded 为了使这些链接在浏览器中工作 我必须对它们重新编码 file development H C3 A5ndplukket doc becomes f
  • Java byte[] 与 String 之间的转换

    为什么这个junit测试失败了 import org junit Assert import org junit Test import java io UnsupportedEncodingException public class T
  • 将 HTML 导出为 PDF 时出现中文和日文字符编码问题

    我运行一个基于 Web 的时间线制作工具 让用户可以用 HTML JavaScript 创建时间线 然后将其导出到 PDF 文件以便在完成后进行打印 我有几个用户报告了当时间线包含某些 Unicode 字符时将时间线导出为 PDF 时出现的
  • UTF-8 解码如何知道字节边界?

    我一直在阅读大量有关 unicode 编码的文章 尤其是有关 Python 的文章 我想我现在对此已经有了相当深入的了解 但仍有一个小细节我有点不确定 解码如何知道字节边界 例如 假设我有一个带有两个 unicode 字符的 unicode
  • 检查字符串是否编码为 UTF-8

    function seems utf8 str length strlen str for i 0 i lt length i c ord str i if c lt 0x80 n 0 0bbbbbbb elseif c 0xE0 0xC0
  • UTF8/UTF16 和 Base64 在编码方面有什么区别

    In c 我们可以使用下面的类来进行编码 System Text Encoding UTF8 System Text Encoding UTF16 System Text Encoding ASCII 为什么没有System Text En
  • Java Swing 的 UTF-8 支持问题? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在Swing应用程序中实现UTF 8格式 https stackoverflow com questions 13804113 how to implement utf 8 format in s
  • 处理不兼容的字符编码:UTF-8 和 ASCII-8BIT

    我在生产中遇到不兼容的字符编码错误 我尝试在本地重现它 但没有成功 这是错误消息 A ActionView Template Error occurred in controller name action name incompatibl
  • 闪亮的本地部署错误:输入字符串 1 无效 UTF-8

    我很惊讶地发现一个突然的错误 我的 ShinyApp 停止工作并出现未知错误 提示 输入字符串 1 无效 UTF 8 即使在昨天 该应用程序也可以正常运行 但是突然停止了 下面是我运行时的错误描述runApp gt runApp Liste
  • 运行源代码中包含 Unicode 字符的 Python 2.7 代码

    我想运行一个在源代码中包含 unicode utf 8 字符的 Python 源文件 我知道这可以通过添加评论来完成 coding utf 8 在一开始的时候 但是 我希望不使用这种方法来做到这一点 我能想到的一种方法是以转义形式编写 un
  • 将 unicode 代码点转换为 UTF-8 的最简单方法

    在 C 中将 Unicode 代码点转换为 UTF 8 字节序列的最简单方法是什么 想到的唯一方法是使用iconv从 UTF 32LE 代码页映射到 UTF 8 但这似乎有点矫枉过正 Unicode 转换不是一个简单的任务 对我来说 使用
  • 如何将log4j日志文件更改为utf8

    我收到了一个使用 log4j 作为记录器应用程序的代码 如何为其生成 UTF8 日志文件 log4j 创建的日志文件目前为 ASCII 格式 我已经尝试过以下操作 按照以下说明设置日志文件的文件编码 vi current set bomb
  • 数据库字段中的空白不会被trim()删除

    我在 MySQL 的文本字段的段落开头有一些空格 Using trim var text field 在 PHP 中或TRIM text field MySQL 中的语句绝对不执行任何操作 这个空白可能是什么以及如何通过代码删除它 如果我进
  • 编码的 nsdata utf8 json,在 ios 中带有重音字符

    我向网络服务器发出一个发布请求 该服务器用 JSON 回答我 这是响应的标头 Cache Control private Content Length 826 Content Type application json charset ut
  • 用于 UTF8 到 1252 的 Windows C API

    我熟悉 WideCharToMultiByte 和 MultiByteToWideChar 转换 可以使用它们来做类似的事情 UTF8 gt UTF16 gt 1252 我知道 iconv 会满足我的需要 但是有人知道任何 MS 库可以在一
  • C# 无法将欧元符号打印到文件中(使用 Excel 打开时)

    我在使用 Web api 控制器的 get 方法时遇到问题 此方法返回一个 HttpResponseMessage 对象 该对象具有带有 csv 文件的 HttpContent 其中包含欧元符号 当该方法返回文件时 不会打印欧元符号 该方法

随机推荐

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

    外媒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