Qt基础开发之QString与QByteArray详细用法与区别及QString QByteArray互转
QString
Qt的QString类提供了很方便的对字符串操作的接口,QString没有继承任何Qt基类。
QString::arg()用法
QStringstr=QString("%1%2%3").arg(1).arg(2.0).arg("hello");
%1,%2,%3作为占位符,将被后面的arg()函数中的内容依次替换,比如%1将被替换成1,%2将被替换成2.0,%3将被替换成"hello"。输出为:"12hello"
QString::sprintf用法
QString
QString str.sprintf("%d%s",10,"hello");
QByteArray
Qt的QByteArray类提供了很方便的对字节流操作的接口,QByteArray没有继承任何Qt基类。
QByteArray::toHex将字节流转换成ACSII编码
例如:0x31一个字节会转换成"31"两个字节
QByteArraybyte("123456"); QByteArraybyteHex=byte.toHex(); qDebug()<<"byte:"<输出:byte:"123456"byteHex:"313233343536"
QByteArray::fromHex将ACSII编码转字节流
例如:"31"会转换成0x31一个字节,需要注意它是一个静态函数
QByteArraybyte("31323334"); QByteArraybyteFromHex=QByteArray::fromHex(byte); qDebug()<<"byte:"<输出:byte:"31323334"byteFromHex:"1234"
QByteArray转char*
QByteArraybyte("123456"); char*str=byte.data(); qDebug()<<"str:"<输出:str:123456
QString与QByteArray的区别
QString是专门用来处理字符串的,除了能处理ASCII编码字符,还包括各国语言的编码,默认情况下QString会把所有数据当做utf-8编码来处理。QByteArray只是单纯用来处理数据的,除了能处理ASCII编码字符,其它复杂的编码不能处理,直接以字节流的方式来对待。
看下面一个例子:
QStringstr("小马哥"); QByteArraybyte("小马哥"); qDebug()<<"str:"<输出结果:str:"小马哥"byte:"\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5",str保留编码格式,能输出中文,但是QByteArray只把"小马哥"当做普通的字节数据来处理,utf-8编码下,一个汉字占三个字节。
QStringQByteArray互转
QString转QByteArray
QStringstr("123abc小马哥"); QByteArraybyte1=str.toLatin1();//按照ASCII编码转换,无法转换中文 QByteArraybyte2=str.toUtf8();//按照Utf-8编码转换,可以转换中文 qDebug()<< "byte1:"<输出结果:byte1:"123abc???"byte2:"123abc\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5"
QByteArray转QString
QByteArraybyte("123abc小马哥"); QStringstr(byte); qDebug()<<"byte:"<输出结果:byte:"123abc\xE5\xB0\x8F\xE9\xA9\xAC\xE5\x93\xA5"str:"123abc小马哥"
QString转char*
QString类型无法直接转换成char*,需要先转换成QByteArray,然后再转char*
QStringstr("123abc小马哥"); QByteArraybyte=str.toUtf8(); char*str1=byte.data();本文主要讲解了Qt开发中QString与QByteArray详细用法与区别及QStringQByteArray互转,QByteArray转char*、QString转char*、更多源于Qt开发知识请查看下面的相关链接
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。