首页 > 其他分享 >QByteArray 类

QByteArray 类

时间:2023-02-12 22:08:15浏览次数:36  
标签:编码 QByteArray 函数 字符串 qDebug UTF

QByteArray 类作为字符串使用时,它会自动在字符串末尾添加 '\0' ,末尾的 '\0' 不计入字符串长度。QByteArray 字符串的内部编码是不固定的,比如前面 QString 的 toLocal8Bit 和 toUtf8 函数返回的对象全是 QByteArray 类型。QByteArray 字符串的数据来源可能有:

  • ①源代码里的字符串,这时 QByteArray 内码与源文件的编码有关,UTF-8 编码源文件生成的很可能就是 UTF-8 编码的字符串。
  • ②本地文本文件,从文件读取的字符串与该文件使用的字符编码有关,Linux 上常用 UTF-8,而 Windows 经常使用 ANSI 多字节编码,简体 Windows 系统一般是 GBK,而繁体默认是 Big5。
  • ③网页数据,网页本身也是文本文件,有它自己的文本编码格式,这时网页文件编码格式决定 QByteArray 字符串的编码格式。

我们这里示范的是第一种,全部用 UTF-8 编码的 QByteArray 字符串。QByteArray 类关于字符串处理的成员函数基本和 QString 类的一样,函数名和参数都是类似的。但注意因为 QByteArray 内码不确定,它没有 arg 函数,也没有字符编码转换的函数。QByteArray 关于字符串处理的函数就不枚举了,和上一节 QString 的差不多,下面直接看示例代码:

void Str() //内码 UTF-8
{
//数值与字符串转换
int nDec = 800;
QByteArray basDec;
basDec.setNum(nDec); //数值转字符串
qDebug()<<basDec;
QByteArray basReal = "125.78999";
double dblReal = basReal.toDouble(); //字符串转数值
qDebug()<<fixed<<dblReal;

//运算符
QByteArray basABCD = "ABCD";
QByteArray basXYZ = "XYZ";
qDebug()<<(basABCD < basXYZ); //二者字符编码一致才能比较!
qDebug()<<(basABCD == basXYZ);
qDebug()<<(basABCD >= basXYZ);
qDebug()<<(basABCD + basXYZ);

//子串处理
QByteArray basHanzi = "1234打印汉字";
//作为字符串时 QByteArray::length() 和 qstrlen() 一致
qDebug()<<basHanzi.length()<<"\t"<<qstrlen( basHanzi.data() );
//重复
QByteArray basMoreHanzi = basHanzi.repeated(2);
qDebug()<<basMoreHanzi.count("1234"); //统计次数
qDebug()<<basMoreHanzi.startsWith("1234"); //开头判断
qDebug()<<basMoreHanzi.endsWith("汉字"); //结尾判断
qDebug()<<basMoreHanzi.indexOf("1234"); //从左边查出现位置
qDebug()<<basMoreHanzi.lastIndexOf("1234"); //从右边查出现位置
//替换
basMoreHanzi.replace("1234", "一二三四");
qDebug()<<basMoreHanzi;

//切割字符串
QByteArray basComplexFile = " /home/user/somefile.txt \t\t ";
QByteArray basFileName = basComplexFile.trimmed(); //剔除两端空白
qDebug()<<basFileName;
//分隔得到新的 QByteArray 对象列表
QList<QByteArray> baList = basFileName.split('/');
//打印
for(int i=0; i<baList.length(); i++)
{
qDebug()<<i<<"\t"<<baList[i];
}
//没有段落函数
}

标签:编码,QByteArray,函数,字符串,qDebug,UTF
From: https://blog.51cto.com/u_15515702/6052207

相关文章

  • Qbytearray 与 float , int 等互转
    #include<QCoreApplication>#include<QDebug>intmain(intargc,char*argv[]){QCoreApplicationa(argc,argv);QByteArraybuff;floatff=1.23......
  • QJsonObject与(QByteArray、QString)互相转换
    QJsonObjectCbActionSyncManager::getJsonObjectFromByteArray(constQByteArrayjsonString){QJsonDocumentjsonDocument=QJsonDocument::fromJson(jsonString);......
  • QByteArray类的介绍
    QByteArray可以存储原生的二进制数据和8位编码的文本数据。对于文件,即便是一个文本文件,读出时也可以按照二进制的形式读出,这就是二进制格式。如果把这些二进制的0、1串按照......