Qt基础开发之QString与QByteArray详细用法与区别及QString QByteArray互转
admin
2024-02-21 21:09:36
0

QString

Qt的QString类提供了很方便的对字符串操作的接口,QString没有继承任何Qt基类。

QString::arg()用法

1

QString str = QString("%1 %2 %3").arg(1).arg(2.0).arg("hello");

​ %1, %2, %3作为占位符,将被后面的arg()函数中的内容依次替换,比如%1将被替换成1,%2将被替换成2.0,%3将被替换成"hello"。输出为:"1 2 hello"

QString::sprintf用法

QString

1

2

QString

str.sprintf("%d %s", 10, "hello");

QByteArray

Qt的QByteArray类提供了很方便的对字节流操作的接口,QByteArray没有继承任何Qt基类。

QByteArray::toHex将字节流转换成ACSII编码

例如:0x31一个字节会转换成"31"两个字节

1

2

3

QByteArray byte("123456");

QByteArray byteHex = byte.toHex();

qDebug() << "byte:" << byte << "byteHex:" << byteHex << endl;

输出:byte: "123456" byteHex: "313233343536"

QByteArray::fromHex将ACSII编码转字节流

例如:"31"会转换成0x31一个字节, 需要注意它是一个静态函数

1

2

3

QByteArray byte("31323334");

QByteArray byteFromHex = QByteArray::fromHex(byte);

qDebug() << "byte:" << byte << "byteFromHex:" << byteFromHex << endl;

输出: byte: "31323334" byteFromHex: "1234"

​QByteArray转char*

1

2

3

QByteArray byte("123456");

char* str = byte.data();

qDebug() << "str:" << str << endl;

输出:str: 123456

QString与QByteArray的区别

​QString是专门用来处理字符串的,除了能处理ASCII编码字符,还包括各国语言的编码,默认情况下QString会把所有数据当做utf-8编码来处理。QByteArray只是单纯用来处理数据的,除了能处理ASCII编码字符,其它复杂的编码不能处理,直接以字节流的方式来对待。

看下面一个例子:

1

2

3

QString str("小马哥");

QByteArray byte("小马哥");

qDebug() << "str:" << str << "byte:" << byte << endl;

​输出结果:str: "小马哥" byte: "\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5",str保留编码格式,能输出中文,但是QByteArray只把"小马哥"当做普通的字节数据来处理,utf-8编码下,一个汉字占三个字节。

QString QByteArray互转

QString转QByteArray

1

2

3

4

QString str("123abc小马哥");

 QByteArray byte1 = str.toLatin1(); //按照ASCII编码转换,无法转换中文

 QByteArray byte2 = str.toUtf8();  //按照Utf-8编码转换,可以转换中文

 qDebug() <<  "byte1:" << byte1 << "byte2:" << byte2;

输出结果:byte1: "123abc???" byte2: "123abc\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5"

QByteArray转QString

1

2

3

QByteArray byte("123abc小马哥");

QString str(byte);

qDebug() << "byte:" << byte << "str:" << str;

输出结果:byte: "123abc\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5" str: "123abc小马哥"

QString 转char*

​QString类型无法直接转换成char*, 需要先转换成QByteArray, 然后再转char*

1

2

3

QString str("123abc小马哥");

QByteArray byte = str.toUtf8();

char* str1 = byte.data();

本文主要讲解了Qt开发中QString与QByteArray详细用法与区别及QString QByteArray互转,QByteArray转char*、QString转char*、更多源于Qt开发知识请查看下面的相关链接

相关内容

热门资讯

电视安卓系统哪个品牌好,哪家品... 你有没有想过,家里的电视是不是该升级换代了呢?现在市面上电视品牌琳琅满目,各种操作系统也是让人眼花缭...
安卓会员管理系统怎么用,提升服... 你有没有想过,手机里那些你爱不释手的APP,背后其实有个强大的会员管理系统在默默支持呢?没错,就是那...
安卓系统软件使用技巧,解锁软件... 你有没有发现,用安卓手机的时候,总有一些小技巧能让你玩得更溜?别小看了这些小细节,它们可是能让你的手...
安卓系统提示音替换 你知道吗?手机里那个时不时响起的提示音,有时候真的能让人心情大好,有时候又让人抓狂不已。今天,就让我...
安卓开机不了系统更新 手机突然开不了机,系统更新还卡在那里,这可真是让人头疼的问题啊!你是不是也遇到了这种情况?别急,今天...
安卓系统中微信视频,安卓系统下... 你有没有发现,现在用手机聊天,视频通话简直成了标配!尤其是咱们安卓系统的小伙伴们,微信视频功能更是用...
安卓系统是服务器,服务器端的智... 你知道吗?在科技的世界里,安卓系统可是个超级明星呢!它不仅仅是个手机操作系统,竟然还能成为服务器的得...
pc电脑安卓系统下载软件,轻松... 你有没有想过,你的PC电脑上安装了安卓系统,是不是瞬间觉得世界都大不一样了呢?没错,就是那种“一机在...
电影院购票系统安卓,便捷观影新... 你有没有想过,在繁忙的生活中,一部好电影就像是一剂强心针,能瞬间让你放松心情?而我今天要和你分享的,...
安卓系统可以写程序? 你有没有想过,安卓系统竟然也能写程序呢?没错,你没听错!这个我们日常使用的智能手机操作系统,竟然有着...
安卓系统架构书籍推荐,权威书籍... 你有没有想过,想要深入了解安卓系统架构,却不知道从何下手?别急,今天我就要给你推荐几本超级实用的书籍...
安卓系统看到的炸弹,技术解析与... 安卓系统看到的炸弹——揭秘手机中的隐形威胁在数字化时代,智能手机已经成为我们生活中不可或缺的一部分。...
鸿蒙系统有安卓文件,畅享多平台... 你知道吗?最近在科技圈里,有个大新闻可是闹得沸沸扬扬的,那就是鸿蒙系统竟然有了安卓文件!是不是觉得有...
宝马安卓车机系统切换,驾驭未来... 你有没有发现,现在的汽车越来越智能了?尤其是那些豪华品牌,比如宝马,它们的内饰里那个大屏幕,简直就像...
p30退回安卓系统 你有没有听说最近P30的用户们都在忙活一件大事?没错,就是他们的手机要退回安卓系统啦!这可不是一个简...
oppoa57安卓原生系统,原... 你有没有发现,最近OPPO A57这款手机在安卓原生系统上的表现真是让人眼前一亮呢?今天,就让我带你...
安卓系统输入法联想,安卓系统输... 你有没有发现,手机上的输入法真的是个神奇的小助手呢?尤其是安卓系统的输入法,简直就是智能生活的点睛之...
怎么进入安卓刷机系统,安卓刷机... 亲爱的手机控们,你是否曾对安卓手机的刷机系统充满好奇?想要解锁手机潜能,体验全新的系统魅力?别急,今...
安卓系统程序有病毒 你知道吗?在这个数字化时代,手机已经成了我们生活中不可或缺的好伙伴。但是,你知道吗?即使是安卓系统,...
奥迪中控安卓系统下载,畅享智能... 你有没有发现,现在汽车的中控系统越来越智能了?尤其是奥迪这种豪华品牌,他们的中控系统简直就是科技与艺...