QT學習 QString的arg方法

2022-01-23 09:22:48 字數 3628 閱讀 3660

**自:

在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...