C++之char16_t*与char*类型相互转换(二百六十)

news2024/11/15 18:01:48

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:C++之char16_t与char类型相互转换

2.char16_t类型介绍

  • char16_t 是一个在 C++11 中引入的无符号 16 位字符类型。它是一个标准类型,在 <charconv> 头文件中定义。char16_t 设计用于存储 Unicode 字符,可以表示大多数常用字符,包括中文字符。在 C++11 之前,Unicode 字符通常使用 char 类型存储,但 char 类型是 signed char,可以表示 -128 到 127 的值,这意味着它不能正确定义许多 Unicode 字符。
  • char16_t 的引入解决了这个问题。由于它是无符号类型,因此它可以表示 0 到 65535 的值,这足以表示 Unicode 基本多语言平面(BMP)中的所有字符。BMP 包含了大部分常用字符,包括中文字符。因此,使用 char16_t 存储 Unicode 字符是安全的。
  • 使用 char16_t 类型有几个好处。首先,它可以提高程序的可移植性。由于 char16_t 可以正确表示 Unicode 字符,因此使用它的程序可以
  • 在不同平台和环境中运行,而不需要对字符编码进行特殊处理。其次,它可以提高程序的可读性和可维护性。使用 char16_t 存储字符串可以清楚地表明字符串是 Unicode 字符串,而不是以特定编码存储的字符串。这使得代码更易于理解和维护。
  • 要在 C++ 中使用 char16_t 类型,您需要在代码中包含 <charconv> 头文件,并使用 char16_t 关键字声明变量和函数参数。例如,您可以定义一个 char16_t 类型的变量来存储中文字符:
#include <iostream>
#include <charconv>
int main() {
    char16_t ch = U'中'; // 使用 Unicode 引号表示 Unicode 字符
    std::cout << "char16_t ch: " << ch << std::endl;
    return 0;
}
  • 在上面的示例中,我们使用 Unicode 引号(U’) 显式地表示 Unicode 字符。这有助于编译器正确地将字符识别为 Unicode 字符,而不是普通字符。输出将显示存储在 ch 中的中文字符。
  • 总之,char16_t 类型是 C++11 中引入的一种新类型,用于存储 Unicode 字符。它解决了使用 signed char 类型存储 Unicode 字符时遇到的问题,并提供了更好的可移植性、可读性和可维护性。通过使用 char16_t,C++ 程序可以更方便地处理和存储 Unicode 字符。

3.代码实例

<1>.char转char16_t类型

#include <iostream>
#include <locale>
#include <codecvt>

int main() {
  //char*转char16_t*
  std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t> converter;
  const char *str = "Test char*";
  std::u16string u16str = converter.from_bytes(str);
  std::string str2 = converter.to_bytes(u16str);
  std::cout << str2 << std::endl;
  return 0;
}

<2>.char16_t转char类型

#include <iostream>
#include <locale>
#include <codecvt>

int main() {
  //v2.0 char16_t*转char*
  const char16_t *str1 = u"Test char16_t";
  std::string str3 = converter.to_bytes(str1);
  printf("xxx--------------->%s(), line = %d, str3 = %s\n",__FUNCTION__,__LINE__,str3.c_str());

  return 0;
}

注意:
u"Test char16_t":中的u表示字符串字面量,用于创建char16_t *类型。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1542645.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国内ip修改用什么软件下载?

在特定情况下&#xff0c;可能需要修改你的国内IP地址以实现网络访问需求或绕过地域限制。许多软件和工具可以帮助你实现这一目标&#xff0c;无论是为了隐私保护还是访问特定内容。虎观代理小二将介绍一些推荐的软件下载途径&#xff0c;以便你修改国内IP地址。 1. IP代理软件…

深度解析:Elasticsearch写入请求处理流程

版本 Elasticsearch 8.x 原文链接&#xff1a;https://mp.weixin.qq.com/s/hZ_ZOLFUoRuWyqp47hqCgQ 今天来看下 Elasticsearch 中的写入流程。 不想看过程可以直接跳转文章末尾查看总结部分。最后附上个人理解的一个图。 从我们发出写入请求&#xff0c;到 Elasticsearch 接收请…

5个适用于 Windows/PC 的水印去除软件(视频/图像)

水印是文本、徽标、印记、图像或签名&#xff0c;通常叠加在视频、其他图像或具有较高透明度的 PDF 文档上。当您免费使用某些产品&#xff08;例如视频编辑器&#xff09;时&#xff0c;最终输出通常带有代表您使用的编辑器的水印。您可能需要出于您的目的从此类媒体文件中删除…

Django之Celery篇(三)

一、任务交给Celery Django任务交给Celery的方法和普通使用Celery任务的调用基本无区别,只是将执行代码的放到到View视图中 而获取结果,往往并不能把结果和第1次请求一起响应,若想获取结果是通过第2次请求获取结果 代码如下: from django.http import HttpResponsefrom …

我们是如何在 IDE 中设计 AutoDev 的 AI 编程开发智能体语言与框架?

上周微软发布了自家的 AI 编程和软件开发智能体框架&#xff1a;AutoDev&#xff0c;其与我们开发的 IDE 插件 AutoDev 有颇多的相似之处&#xff0c;特别是一些设计思路&#xff0c;以及在对于辅助软件开发任务的智能体以及一些基础设施上。 稍有不同的是&#xff1a; 交互介质…

Axure RP 9 for mac中文版密钥激活版下载

Axure RP 9是一款专业的快速原型设计工具&#xff0c;它可以帮助产品设计师、交互设计师和用户体验设计师等创建高保真度、交互性强的原型&#xff0c;以便在产品开发之前进行测试和用户验证。 软件下载&#xff1a;Axure RP 9 for mac中文版密钥激活版下载 该工具具有丰富的功…

微信小程序实现多张照片上传

hello hello~ &#xff0c;这里是 code袁~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;code袁 &#x1f4a5; 所属专栏&…

python绘图matplotlib——使用记录1

本博文来自于网络收集&#xff0c;如有侵权请联系删除 使用matplotlib绘图 1 常用函数汇总1.1 plot1.2 legend1.3 scatter1.4 xlim1.5 xlabel1.6 grid1.7 axhline1.7 axvspan1.8 annotate1.9 text1.10 title 2 常见图形绘制2.1 bar——柱状图2.2 barh——条形图2.3 hist——直…

浏览器工作原理与实践--渲染流程(上):HTML、CSS和JavaScript,是如何变成页面的

在上一篇文章中我们介绍了导航相关的流程&#xff0c;那导航被提交后又会怎么样呢&#xff1f;就进入了渲染阶段。这个阶段很重要&#xff0c;了解其相关流程能让你“看透”页面是如何工作的&#xff0c;有了这些知识&#xff0c;你可以解决一系列相关的问题&#xff0c;比如能…

服务端高并发分布式结构

前言 本文以⼀个 “电子商务” 应用为例&#xff0c;介绍从⼀百个到千万级并发情况下服务端的架构的演进过程&#xff0c;同时列举出每个演进阶段会遇到的相关技术&#xff0c;让大家对架构的演进有⼀个整体的认知&#xff0c;方便⼤家对后续知识做深⼊学习时有⼀定的整体视野…

二次开发Flink-coGroup算子支持迟到数据通过测输出流提取

目录 1.背景 2.coGroup算子源码分析 2.1完整的coGroup算子调用流程 2.2coGroup方法入口 2.3 CoGroupedStreams对象分析 2.4WithWindow内部类分析 2.5CoGroupWindowFunction函数分析 3.修改源码支持获取迟到数据测输出流 3.1复制CoGroupedStreams 3.2新增WithWindow.si…

YiYi-Web项目介绍

YiYi-Web项目介绍 1. 简介2. 使用2.1 后端开发环境2.2 前端开发环境 3. 测试环境&#xff1a;4. 更新日志5. 打包情况6.项目截图 本项目前端是html、css、js、jQuery基础技术。 后端都是最新的SpringBoot技术&#xff0c;不分离版本&#xff0c; 是最基础的项目开发教程&#x…

Spark Map 和 FlatMap 的比较

Spark Map 和 FlatMap 的比较 本节将介绍Spark中map(func)和flatMap(func)两个函数的区别和基本使用。 函数原型 map(func) 将原数据的每个元素传给函数func进行格式化&#xff0c;返回一个新的分布式数据集。 flatMap(func) 跟map(func)类似&#xff0c;但是每个输入项和…

Flink GateWay、HiveServer2 和 hive on spark

Flink SQL Gateway简介 从官网的资料可以知道Flink SQL Gateway是一个服务&#xff0c;这个服务支持多个客户端并发的从远程提交任务。Flink SQL Gateway使任务的提交、元数据的查询、在线数据分析变得更简单。 Flink SQL Gateway的架构如下图&#xff0c;它由插件化的Endpoi…

孩子看书用白光还是暖白光好呢?五大护眼台灯推荐,必选!

孩子看书时&#xff0c;选择合适的光线是至关重要的。白光与暖白光各有优劣&#xff0c;白光亮度高、色彩还原性好&#xff0c;适合需要高度集中注意力和精细操作的场合&#xff1b;而暖白光则更加柔和、不刺眼&#xff0c;有助于营造轻松的阅读氛围。为了帮助家长更好地为孩子…

coco creator 3.x: 居中展示

coco creator 3.x 里面有很多需要居中处理&#xff0c;下面积累记录一些日常的实验。 下面一张图如下&#xff0c;在这张图里面创建了一个3x3的展示。但是这个展示过程并不在居中展示。而它的容器节点 恰恰就在中心点位置。所以在创建后&#xff0c;布局预制体元素并不能实现居…

Docker容器初始

华子目录 docker简介虚拟化技术硬件级虚拟化硬件级虚拟化历史操作系统虚拟化历史基于服务的云计算模式 什么是dockerDocker和传统虚拟化方式的不同之处为什么要使用docker&#xff1f;Docker 在如下几个方面具有较大的优势 对比传统虚拟机总结docker应用场景docker改变了什么 基…

iOS开发 - 转源码 - __weak问题解决

iOS开发 - 转源码 - __weak问题解决 在使用clang转换OC为C代码时&#xff0c;可能会遇到以下问题 cannot create __weak reference in file using manual reference 原因 __weak弱引用是需要runtime支持的&#xff0c;如果我们还只是使用静态编译&#xff0c;是无法正常转换的…

MultiArch与Ubuntu/Debian 的交叉编译

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;基于ARM 的Linux系统的交叉编译 下一篇&#xff1a;MultiArch与Ubuntu/Debian 的交叉编译 警告&#xff1a; 本教程可能包含过时的信息。 什么是“MultiArch” OpenCV 可能…

家乡特色推荐系统设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…