Qt基础开发之QString与QByteArray的区别有哪些-创新互联

这篇文章主要介绍Qt基础开发之QString与QByteArray的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的嘉黎网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!

QString

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

QString::arg()用法

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

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

QByteArray

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

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

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

QByteArray byte("123456");
QByteArray byteHex = byte.toHex();
qDebug() << "byte:" << byte << "byteHex:" << byteHex << endl;

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

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

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

QByteArray byte("31323334");
QByteArray byteFromHex = QByteArray::fromHex(byte);
qDebug() << "byte:" << byte << "byteFromHex:" << byteFromHex << endl;

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

QByteArray转char*

QByteArray byte("123456");
char* str = byte.data();
qDebug() << "str:" << str << endl;

输出:str: 123456

QString与QByteArray的区别

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

看下面一个例子:

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

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

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*

QString str("123abc小马哥");
QByteArray byte = str.toUtf8();
char* str1 = byte.data();

以上是“Qt基础开发之QString与QByteArray的区别有哪些”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联网站建设公司行业资讯频道!

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

网页题目:Qt基础开发之QString与QByteArray的区别有哪些-创新互联
链接分享:https://www.cdcxhl.com/article26/csgjjg.html

成都网站建设公司_创新互联,为您提供网站设计公司微信小程序云服务器网站制作商城网站网站设计

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网站建设公司