**自:
在qt的qstring中,arg方法類似於c中的printf中使用的格式輸出符(只是有點類似)。
在qt5的幫助文件中,有如下幾種用法:
使用arg(str1, str2, str3)這種方法進行替換。
使用arg(str1).arg(str2).arg(str3)這種方法進行替換。
使用arg(int, int, int)這種方式進行替換。
一、使用arg(str1, str2, str3)
這種方法要求str1、str2、str3都為const qstring &型別,即:
qstring qstring::arg(const qstring & a1,const qstring & a2,const qstring & a3)const
同時,arg( )裡的引數實現從1個到9個,也就是說最多只能有9個!即在實現中,arg的定義中引數最多的為:
qstring qstring::arg(const qstring & a1,const qstring & a2,const qstring & a3,const qstring & a4,const qstring & a5,const qstring & a6,const qstring & a7,const qstring & a8,const qstring & a9)const
這也就意味著,如果有如下**:
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"
二、使用arg(str1).arg(str2).arg(str3)
這種方法其實前面用到了,如下面例子:
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
").arg("
hello");
//輸出:"helloworld %2"
str = qstring("
%1 %2
").arg("
%2world
").arg("
hello");
//輸出:"helloworld hello"
str = qstring("
%1 %2
").arg("
%8world
").arg("
hello");
//輸出:"%8world hello
str = qstring("
%-1 %6
").arg("
%3world
").arg("
hello");
//輸出:"%-1 helloworld"
arg( )裡的引數在進行替換時,只會按照數字從小到大的順序進行替換,只有比當前數字小的所有數字都替換完成了,才會替換當前數字,否則將當前數字和%按字串處理。
三、使用arg(int, int, int)
qstring qstring::arg(int a,int fieldwidth = 0,int base = 10, qchar fillchar = qlatin1char(' '))const
a:表示要處理的數字;fieldwidth:字寬;base:數字基數
如下列:
str = qstring("十進位制 63 的十進位制為 %1")
.arg(
63,0,10
); //
輸出:"十進位制 63 的十進位制為 63"
str = qstring("
十進位制 63 的十六進製制為 %1")
.arg(
63,0,16
); //
輸出:"十進位制 63 的十六進製制為 3f"
str = qstring("
%1 %l2 %l3")
.arg(
12345
) .arg(
1987654321) //
根據結果,可知道這個l的作用
.arg(12345,0,8); //
但使用這種方式時,l失效
//輸出為:12345 1,987,654,321 30071
這裡當a的型別為double時,原型為:
qstring qstring::arg(double a,int fieldwidth = 0,char format ='g',int precision = -1, qchar fillchar = qlatin1char(' '))const
多了兩個引數:format和precision,乙個指明規格,乙個指明精度。規格預設為 'g' 或 'g',指示後面的精度為整數和小數部分總和的長度;規格為'e'或 'e' 時,表示為科學記數法形式,精度部分指示的為小數部分的位數長度;規格為其他字元時,無作用,輸出原double數字。如:
double d = 12.345689;str = qstring("
delta: %1
").arg(d, 0,'
g',4
);//
輸出為:"delta: 12.35" ---這裡進行了四捨五入
str = qstring("
delta: %1
").arg(d, 0,'
g',5
);//
輸出為:"delta: 12.346" ---這裡進行了四捨五入
str = qstring("
delta: %1
").arg(d, 0,'
e',4
);//
輸出為:"delta: 1.234e+01"
str = qstring("
delta: %1
").arg(d, 0,'
e',4
);//
輸出為:"delta: 1.234e+01"
str = qstring("
delta: %1
").arg(d, 0,'
r',4
);//
輸出為:"delta: 12.345689"
str = qstring("
delta: %1
").arg(d, 0,'
q',4
);//
輸出為:"delta: 12.345689"
Qt中QString的arg()函式使用記錄
qstring arg 是用字串變數引數依次替代字串中最小數值大致有如下3種用法 1 arg str1,str2,str3 其中一次可替換引數個數最多為9個,舉例如下 qstring str qstring 1 2 3 4 5 6 7 8 9 10 11 arg 1 2 3 4 5 6 7 8 9 ...
Qt使用QString中arg導致程式閃退
最近專案外面反饋程式出現閃退問題,根據一步步除錯,發現在記錄日誌中導致,之前 是從其他地方拷貝,修改部分地方沒注意.報錯 qstring strlog qstring 超標留樣 留樣瓶號為 1 arg strlog arg m pcyq getbottlenum 原本定義為 qstring strl...
QT中 arg的用法
1 用於填充字串中的 1,2 為給定的引數,如 qstring x 0 qstring y 1 qstring z 2 qstring status qstring number 1 2 3 arg x arg y arg z 結果 number 012 2 qstring arg int a,in...