2014-02-25 24 views
4

我想在QString中格式化整數。我想永遠有6個數字。 例如,「1」應該是「000001」,「12」應該是「000012」。Qt:格式化QString中的整數

我試圖做與printf(%06d, number)一樣。所以我寫了這個

QString test; test = QString("%06d").arg(QString::number(i)); qDebug()<<test;

我在循環for實現。 但它不工作,因爲我有:

「0D」 「1D」 「2D」 「3D」 ...

有誰知道如何做到這一點嗎?

+0

如果你閱讀QString :: arg()的文檔,你將會理解你得到的結果 – RobbieE

回答

4

字符串的參數支持不像printf那樣工作。它都記錄在案。你想要的是:

QString test = QString("%1").arg(i, 6, 10, QLatin1Char('0')); 
0

你可以嘗試以下方法:

int a = 12; 
QString test = QString("%1").arg(a, 6, 'g', -1, '0'); 
qDebug() << test; // outputs "000012" 
+0

這也是工作謝謝。 – Jeanstackamort

+1

這不必要地使用'arg'超載。如果平臺'int'是一個64位類型,或者聲明被改爲'qint64',它將會失敗。由於失敗壯觀,我的意思是結果中只有數字是錯誤的。如果平臺的'double'類型等於'float'並恰好是32位寬(正如標準所允許的那樣),它將會失敗。所以這幾乎是不可移植的,並且根本不推薦。 –

0

QTextStream文檔中看看。有許多格式化設置以及許多方便的操作器。這類似於STL的文本操縱器iostream