我想在字符串上使用.arg()。這是一個例子:QString :: arg()佔位符後的數字
qDebug() << QString("%11%2").arg(66).arg(77);
我想獲得輸出66177
,但當然這不是因爲%11
實際輸出被解釋爲佔位符#11,而不是佔位符#1後面文字1。
有沒有比以下更好的解決方案?
qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77);
我想在字符串上使用.arg()。這是一個例子:QString :: arg()佔位符後的數字
qDebug() << QString("%11%2").arg(66).arg(77);
我想獲得輸出66177
,但當然這不是因爲%11
實際輸出被解釋爲佔位符#11,而不是佔位符#1後面文字1。
有沒有比以下更好的解決方案?
qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77);
的arg
%
後替換最低值序列。範圍必須介於1和99之間。 因此,您不必使用1
索引,您可以使用兩位數字代替一位數字。
試試這個,看看會發生什麼:
qDebug() << QString("%111%22").arg(66).arg(77);
這應該給您預期的結果(我已經測試對QT 5.4和它完美的作品)。
我也問題下測試解決方案的形式註釋,它的工作原理:
qDebug() << QString("%011%02").arg(66).arg(77);
好的解決方案。但有點難以閱讀。最終需要代碼評論。 – Silicomancer
的arg()
的感覺是,它是由%1
更換到%99
一切,這就是爲什麼你不應該有%11
。有幾種方法可以逃避這一點。
你的方式是罰款,以及你可以有1恆定早些時候在你的代碼:
qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77);
或者你可以有:
qDebug() << QString("%1").arg(66) + "1" + QString("%1").arg(77);
使用QString::number
是確定太在指定評論。
嘗試以下方法之一:
QString::number(66) + "1" + QString::number(77)
QString("%1 1 %2").arg(66).arg(77).replace(" ", "")
我將需要高級數字格式(不能使用QString :: number)。不過這肯定是標準案例的替代方案。 – Silicomancer
馬立克的解決方案肯定是普遍的解決方案*** ***。 – Murphy
'qDebug()<< QString的( 「%011%02」)ARG(66).arg(77 );' – Meefte