????????QString中的arg方法類似于 (1)“C中的printf中使用的格式輸出符”和?(2)“C++中string的append方法”的結合體。
常用的兩種格式如下:
1. 用于填充字符串中的%1,%2…為給定的參數。
//原型:
QString QString::arg(const QString & a1)
(1) arg(str1, str2, str3?...)形式
QString str = QString("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11").arg("1","2","3","4","5","6","7","8","9")
//str將只會輸出:"1 2 3 4 5 6 7 8 9 %10 %11"
注意1:arg( )里的參數實現從1個到9個,也就是說最多只能有9個!
解決方法為在后面再加一個arg方法,放上后面兩個對應的參數:形式(2)
(2)arg(str1).arg(str2).arg(str3)
QString str = QString("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11").arg("1","2","3","4","w","6","7","8","9").arg("a","b");
//輸出為:"1 2 3 4 5 6 7 8 9 a b"QString str=QString("%1 %2 %3 %4").arg("A").arg("B").arg("C").arg("D");
//str=="A B C D"
兩者形式的區別:
str = QString("%1 %2").arg("%1World", "Hello");qDebug()<<str;//輸出為:"%1World Hello"str = QString("%1 %2").arg("%1World").arg("Hello");qDebug()<<str;//輸出為:"HelloWorld %2"//第一個arg執行完后變為:QString("%1World %2").arg("Hello")//再次執行后"Hello"替換的為%1
注意2:所以在使用多個arg( )連接時,一定要注意,前面連接使用的arg( )里如果有==“%+數字”==的情況,后面的arg( )會同樣替換!
2.?用于填充字符串中的%1,%2…為給定格式的整形數字
原型:QString QString::arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char( ' ' )) const//參數:a:表示要處理的數字;fieldWidth:字寬(輸出多少位);base:數字基數(八進制/十進制/十六進制);fillChar :要達到字寬fieldWidth,所填充的字符。
注意3:原型中的a的類型還可以是uint、long、double、udouble等數字的類型。
應用:數字前補零
int a = 800;
auto b = QString("%1").arg(a, 6, 10, QLatin1Char('0'));
auto c = QString("%1").arg(a, 6, 16, QLatin1Char('0'));
qDebug() << b;
qDebug() << c;
//輸出:
//b: “000800”
//c: “000320”QString text = QString("%1:%2") .arg(123, 5, 10, QChar('0')) .arg(456, 5, 10, QChar('0'));
//結果:text = “00123:00456”
應用拓展:在小數后補字符 / 控制小數點后精確值位數
//QString::number是將數字(整數、浮點數、有符號、無符號等)轉換為QString類型。
//number方法也有很多重構函數,此處介紹的是:
static QString number(double, char f='g', int prec=6);//第一個參數:待轉換數字;第二個參數(浮點數):浮點數格式;第三個參數(浮點數):保留小數位數。QString::number(100.1, 'f', 3); //100.100
QString::number(100.101111, 'f', 3); //100.101