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

本文主要是介绍字符串转换const char* , char*,QByteArray,QString,string相互转换,支持中文,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 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 -> QByteArrayQTextCodec *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 ->stringQTextCodec *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转换成QStringQString 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;
}

这篇关于字符串转换const char* , char*,QByteArray,QString,string相互转换,支持中文的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/668103

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

c++的初始化列表与const成员

初始化列表与const成员 const成员 使用const修饰的类、结构、联合的成员变量,在类对象创建完成前一定要初始化。 不能在构造函数中初始化const成员,因为执行构造函数时,类对象已经创建完成,只有类对象创建完成才能调用成员函数,构造函数虽然特殊但也是成员函数。 在定义const成员时进行初始化,该语法只有在C11语法标准下才支持。 初始化列表 在构造函数小括号后面,主要用于给

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

每日一题|牛客竞赛|四舍五入|字符串+贪心+模拟

每日一题|四舍五入 四舍五入 心有猛虎,细嗅蔷薇。你好朋友,这里是锅巴的C\C++学习笔记,常言道,不积跬步无以至千里,希望有朝一日我们积累的滴水可以击穿顽石。 四舍五入 题目: 牛牛发明了一种新的四舍五入应用于整数,对个位四舍五入,规则如下 12345->12350 12399->12400 输入描述: 输入一个整数n(0<=n<=109 ) 输出描述: 输出一个整数

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

解决Office Word不能切换中文输入

我们在使用WORD的时可能会经常碰到WORD中无法输入中文的情况。因为,虽然我们安装了搜狗输入法,但是到我们在WORD中使用搜狗的输入法的切换中英文的按键的时候会发现根本没有效果,无法将输入法切换成中文的。下面我就介绍一下如何在WORD中把搜狗输入法切换到中文。

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。

C和指针:字符串

字符串、字符和字节 字符串基础 字符串就是一串零个或多个字符,并且以一个位模式为全0的NUL字节结尾。 字符串长度就是字符串中字符数。 size_t strlen( char const *string ); string为指针常量(const修饰string),指向的string是常量不能修改。size_t是无符号数,定义在stddef.h。 #include <stddef.h>

PHP字符串全排列

方法一: $str = 'abc';$a =str_split($str);perm($a, 0, count($a)-1);function perm(&$ar, $k, $m) {if($k == $m){ echo join('',$ar), PHP_EOL;}else {for($i=$k; $i<=$m; $i++) {swap($ar[$k], $ar[$i]);perm($ar