这里写目录标题
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());
}