2012-05-30 56 views
1

我可能錯過了一些關於QString參數操作的重要信息。QString arg()打印限制?

找不到str2給出有效結果的原因。我發現了幾個用str1編寫的例子,所以我猜它應該可以工作。謝謝。

QString str1 = QString("%1"); 
str1.arg("help"); 
qDebug() << QString("str1 - ") + str1; 

QString str2 = QString("%1").arg("help"); 
qDebug() << QString("str2 - ") + str2; 

結果:

"str1 - %1" 
"str2 - help" 

回答

3

嘗試分配ARG()的值

所以使用返回的值,而不是

例如

QString str1 = QString("%1"); 
str1 =str1.arg("help"); 
qDebug() << QString("str1 - ") + str1; 
+1

ARG不會修改字符串。它使用字符串作爲模式來構建新的 –

+0

我明白了。當然。謝謝。參考幫助混淆了我。 「QString QString :: arg(const QString&a1,const QString&a2)」的例子我猜不夠清楚。 – bernau84

+0

'QString status = QString(「正在處理%2的文件%1:%3」)中的內容不清楚 .arg(i).arg(total).arg(fileName);'和in'返回此字符串的副本用最低編號的位置標記替換爲字符串「 –

0

你在你的例子中自己回答。

QString str1 = QString("%1"); // creates str1 with value "%1" 
str1.arg("help");    // returns a string with `help` and the result is lost. 
qDebug() << QString("str1 - ") + str1; // print "str1 - %1" because str1 still have "%1" 

QString str2 = QString("%1").arg("help"); // creates str2 with value !help": given by returned value of `arg` that takes a string with value "%1" and substitutes "help". 
qDebug() << QString("str2 - ") + str2; // now you are printing "str2 - help" 

如果你看到文檔Qstring:arg你會看到,如果你打電話qstring("%1").arg("help")你調用QString QString::arg (const QString & a, int fieldWidth = 0, const QChar & fillChar = QLatin1Char(' ')) const

相關問題