QString和QByteArray的定义与转换

QString

Qt的QString类提供了很方便的对字符串操作的接口

//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

QByteArray

Qt的QByteArray类提供了很方便的对字节流操作的接口

QString与QByteArray的区别

QString是专门用来处理字符串的,除了能处理ASCII编码字符,还包括各国语言的编码,默认情况下QString会把所有数据当做utf-8编码来存储和处理。

QByteArray只是单纯用来处理数据的,只能处理ASCII编码字符,其它复杂的编码(比如utf-8编码),直接以字节流的方式来对待。

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 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);//QString str = byte;
qDebug() << "byte:" << byte << "str:" << str;

输出结果:

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

QString与vector转换

vector数组(把值赋)给字符串

double可以直接给utf-8

//直接转
QString value_i;
    for (int i = 0; i < pso->g_best.size(); ++i){
    value_i.append(QString("%1").arg(pso->g_best.at(i))).append(QString("\n"));}

字符串(把值赋)给vector数组

utf-8需要转换为double

//toDouble()
while (!file.atEnd()){
   QString line = file.readLine().trimmed();
   one_array.push_back(line.toDouble());
}
  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您可以使用QString的静态函数`QString::number()`将QByteArray的长度转换为字符串,然后将其插入到QString中。下面是一个示例代码: ```cpp QByteArray myArray("Hello, world!"); // 假设这是您要插入其长度的QByteArray QString myString = QString("The length of the byte array is %1.").arg(QString::number(myArray.length())); ``` 在这个示例中,我们使用`QString::arg()`函数将字符串格式化,将QString::number()函数的结果插入到字符串中。 结果将是一个QString,内容如下: ``` The length of the byte array is 13. ``` 您可以将`myString`打印出来或在界面上显示它。 ### 回答2: 在Qt中,如果要将QByteArray的长度插入QString中,可以使用QString的静态函数arg()来格式化字符串。 以下是如何将QByteArray的长度插入QString中的示例代码: ```cpp QByteArray byteArray("This is a QByteArray"); QString str = QString("QByteArray的长度是%1").arg(byteArray.length()); // str的值为 "QByteArray的长度是20" ``` 在上面的代码中,首先创建了一个QByteArray变量byteArray,然后使用arg()函数将byteArray的长度插入到QString中。在arg()函数中,%1表示要插入的对象的位置,其中1表示第一个要插入的对象,即byteArray.length();然后使用"QByteArray的长度是%1"作为格式化字符串,将byteArray.length()插入到字符串中,得到最终的QString对象str。 通过这种方式,我们可以方便地将QByteArray的长度插入到任意需要的地方,以满足自己的需求。 ### 回答3: 在Qt中,可以通过QString的静态成员函数number()来实现将QByteArray的长度插入QString中。这个函数的原型如下: QString QString::number(int n, int base = 10) 其中,n代表要转换的数字值,base代表进制,这里我们使用默认的十进制。 要把QByteArray的长度插入QString中,可以如下操作: 1. 定义一个QByteArray对象,例如:QByteArray byteArray("Hello World"); 2. 调用QString的静态成员函数number(),传入byteArray.size()作为参数,将其转换QString型:QString length = QString::number(byteArray.size()); 3. 可以将得到的length字符串与其他字符串拼接输出,例如:qDebug() << "QByteArray的长度是:" << length; 示例代码如下: #include <QCoreApplication> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QByteArray byteArray("Hello World"); QString length = QString::number(byteArray.size()); qDebug() << "QByteArray的长度是:" << length; return a.exec(); } 通过以上步骤,即可将QByteArray的长度插入QString中,并输出结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值