字符串转换const char* , char*,QByteArray,QString,string相互转换,支持中文

news2024/12/23 7:11:53

文章目录

  • 1.char * 与 const char * 的转换
  • 2.QByteArray 与 char* 的转换
  • 3.QString 与 QByteArray 的转换
  • 4.QString 与 string 的转换
  • 5.QString与const string 的转换
  • 6.QString 与 char* 的转换

在开发中,经常会遇到需要将数据类型进行转换的情况,下面依次给出const char* , char*,QByteArray,QString,string相互转换的方法。支持中文。
转换图示如下:
类型转换图

1.char * 与 const char * 的转换

	char* ch11 = "中国";
	const char* ch12 = "人民";
	ch12 = ch11;

	ch11 = (char*)ch12;

	std::string str13 = ch12;//char* 转string

2.QByteArray 与 char* 的转换

	char* ch31;
	QByteArray byte32("中国");
	ch31 = byte32.data();//QByteArray -> char*

	QByteArray byte33 = QByteArray(ch31);//char* -> QByteArray 

3.QString 与 QByteArray 的转换

	QByteArray byte41("中国");
	QString str42 = QString::fromLocal8Bit("人民");
	byte41 = str42.toLocal8Bit();//QString -> QByteArray
	QTextCodec *codec = QTextCodec::codecForName("GBK");
	QString str43 =codec->toUnicode(byte41);//QByteArray -> QString

4.QString 与 string 的转换

	QString str51 = QString::fromLocal8Bit("中国");
	std::string	str52 = str51.toLocal8Bit().data();//QString ->string
	QTextCodec *codec = QTextCodec::codecForName("GBK");
	QString str53 =codec->toUnicode(QByteArray((char*)(str52.c_str()))) ;//string -> QString

5.QString与const string 的转换

	const std::string str61= "china";
	std::string	str62 = (std::string)str61;

6.QString 与 char* 的转换

	QString str71 = QString::fromLocal8Bit("中国");
	char* ch72 = str71.toLocal8Bit().data();//QString -> char*

	char * ch73 = "中国";
	QByteArray byte74(ch73);
	//QTextCodec *codec = QTextCodec::codecForName("GBK");
	//QString str75 = byteArrayToUnicode(byte74);
	QString str75 = codec->toUnicode(byte74);//char* -> QByteArray

//字符转换函数
QString byteArrayToUnicode(const QByteArray array)
{
	// state用于保存转换状态,它的成员invalidChars,可用来判断是否转换成功
	// 如果转换成功,则值为0,如果值大于0,则说明转换失败
	QTextCodec::ConverterState state;
	// 先尝试使用utf-8的方式把QByteArray转换成QString
	QString text = QTextCodec::codecForName("UTF-8")->toUnicode(array.constData(), array.size(), &state);
	// 如果转换时无效字符数量大于0,说明编码格式不对
	if (state.invalidChars > 0)
	{
		// 再尝试使用GBK的方式进行转换,一般就能转换正确(当然也可能是其它格式,但比较少见了)
		text = QTextCodec::codecForName("GBK")->toUnicode(array);
	}
	return text;
}

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

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

相关文章

伪原创生成器手机版,移动端上写文章更方便!

伪原创生成器虽然不少,但我们大家见到最多的还是电脑使用版,然而提及到伪原创生成器手机版的资源却不是那么多,特别是对于现在手机端也成为了大家办公的一大途径,这主要也是因为手机的便携性,它可以做到让大家随时随地…

【图例】直观的感受MySQL事务的隔离级别分别解决了什么问题?以及如何查看和设置事务隔离级别!

目录 前言一、读未提交(Read Uncommitted)二、读已提交(Read Committed)三、可重复读(Repeatable Read)四、串行化(Serializable) 前言 在MySQL中,事务的隔离级别决定了…

如何本地搭建Emby影音管理服务并结合内网穿透实现远程访问本地影音库

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中,观看视频绝对是主力应用场景之一&…

UE4 C++ 结构体

先在UCLASS()前写入: USTRUCT(BlueprintType) struct FMyStruct //必须以"F"开头 {GENERATED_BODY() //必须添加“GENERATED_BODY()”UPROPERTY(EditAnywhere, BlueprintReadWrite, Category "MyStruct1")int32 Health;UPROPERTY(EditAnywher…

【算法】拦截导弹(线性DP)

题目 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。 但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。 某天,雷达捕捉到敌国的导弹来袭。 由于该系…

04. 【Linux教程】安装 Linux 操作系统

通过前面的小节学习,我们已经对 Linux 操作系统有了简单的了解,同时也在 Windows 下安装了虚拟机软件 VMware ,那么本节课我们就介绍下如何使用虚拟机软件安装 Linux 操作系统。 通过第一小节的学习我们知道 Linux 有很多的发行版本&#xf…

Unity 访问者模式(实例详解)

文章目录 实例1:简单的形状与统计访客实例2:游戏对象组件访问者实例4:Unity场景对象遍历与清理访客实例5:角色行为树访问者 访问者模式(Visitor Pattern)在Unity中主要用于封装对一个对象结构中各个元素的操…

用Audio2Face导出Unity面部动画

开始之前说句话,新年前最后一篇文章了 一定别轻易保存任何内容,尤其是程序员不要轻易Ctrl S 在A2F去往Unity的路上,还要经历特殊Blender,自己电脑中已下载好的可能不是很好使。 如果想查看UE相关的可以跳转到下边这两篇链接 1. …

Qt QWidget Loading界面并覆盖在其他控件上面

目录 一、效果图二、Loading三、使用 一、效果图 界面中有一个Label&#xff0c;一个Button 点击Buttion&#xff0c;显示Loading的界面&#xff0c;并覆盖到Label和Button上面 二、Loading loadingwidget.h #ifndef LOADINGWIDGET_H #define LOADINGWIDGET_H#include <…

曲线拟合、多项式拟合、最小二乘法

最近在做自车轨迹预测的工作&#xff0c;遇到 曲线拟合、多项式拟合、最小二乘法这些概念有点不清晰&#xff0c; 做一些概念区别的总结&#xff1a; 曲线拟合用于查找一系列数据点的“最佳拟合”线或曲线。 大多数情况下&#xff0c;曲线拟合将产生一个函数&#xff0c;可用于…

1.26模拟退火

模拟退火是爬山算法的一种&#xff0c;是搜索算法 初始阶段 即只有在每次更新方案时&#xff0c;才会使循环次数增加

Maven安装,学习笔记,详细整理maven的一些配置

Maven 1. 初识Maven 2. Maven概述 Maven模型介绍 Maven仓库介绍 Maven安装与配置 3. IDEA集成Maven 4. 依赖管理 01. Maven课程介绍 1.1 课程安排 学习完前端Web开发技术后&#xff0c;我们即将开始学习后端Web开发技术。做为一名Java开发工程师&#xff0c;后端 Web开发技术…

屈子祠镇黑鱼岭,不可移动文物预防性保护系统守遗珍

一、何止秦俑 秦陵苑囿青铜水禽等文物集中展出 文物保护&#xff0c;尤其是不可移动文物的保护&#xff0c;一直都是文化遗产的重要环节。湖南省汨罗市屈子祠镇双楚村黑鱼岭墓地&#xff0c;作为长江中游地区的重大考古发现&#xff0c;其商朝晚期的历史背景赋予其不可估量的历…

鸿蒙开发实战-运动app开发

主要开发内容 3.1 开发准备 想要实现以下功能的话&#xff0c;需要学习“Tabs”&#xff0c;“TabContent”&#xff0c;“Row”&#xff0c;“Column”&#xff0c;等等相关技术。 主页 静坐页面   除此之外&#xff0c;还需要先准备8张图标的图片以及应用开发所需要的图片…

Python下载安装与环境配置

本文将指导您完成Python的下载、安装以及环境配置过程&#xff0c;确保您在编写和运行Python代码时能够获得最佳体验。我们将提供详细的步骤和代码示例&#xff0c;帮助您顺利完成设置。 一、Python下载与安装 访问Python官网&#xff1a;首先&#xff0c;您需要访问Python的官…

Django模型(六)

一、其它查询 文档:https://docs.djangoproject.com/zh-hans/4.1/ref/models/querysets/#count 1.1、排序 Queryset.order_by(*fields) 默认情况下,QuerySet 返回的结果是按照模型 Meta 中的 ordering 选项给出的排序元组排序的 可以通过使用 order_by 方法在每个 QueryS…

RocketMq5源码搭建

最近公司使用到了RocketMQ,所以打算研究一下RocketMQ 准备自己动手搭建一下RocketMq源码 前提 需要搭建jdk环境&#xff0c;jdk版本需要高于1.8 首先 从github 拉源码 源码地址&#xff1a;rocketMq源码传送门 启动namesrv 启动之前需要配置一下ROCKERMQ_HOME 配置如下&a…

【C++】 C++入门—内联函数

C入门 1 内联函数1.1 定义1.2 查看方式1.3 注意 Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读下一篇文章见&#xff01;&#xff01;&#xff01; 1 内联函数 1.1 定义 程序在执行一个函数前需要做准备工作&#xff1a;要将实参、局部变量、返回地址以及若干寄存…

pnpm : 无法加载文件 D:\tool\nvm\nvm\node_global\pnpm.ps1,因为在此系统上禁止运行脚本

你们好&#xff0c;我是金金金。 场景 新创建的项目&#xff0c;在vscode编辑器终端输入 pnpm i&#xff0c;显示报错如上 解决 在终端输入get-ExecutionPolicy(查看执行策略/权限) 输出Restricted(受限的) 终端再次输入Set-ExecutionPolicy -Scope CurrentUser命令给用户赋予…

如何在淘宝和Shopee上进行选品:策略和原则

在当今数字化时代&#xff0c;电商平台已经成为卖家们扩展业务和增加销售额的重要渠道。而在淘宝和Shopee这两个知名电商平台上进行选品时&#xff0c;卖家可以遵循一些相似的原则和策略&#xff0c;以确保他们的产品能够吸引目标客户并取得成功。本文将为您介绍一些在淘宝和Sh…