Qt: format an integer in a QString
Question
I would like to format an integer in a QString
. I would like to always have 6 numbers.
For example "1" should be "000001" and "12" should be "000012".
I try to do like with printf(%06d, number)
. So I wrote this
QString test;
test = QString("%06d").arg(QString::number(i));
qDebug()<<test;
i is implemented in a loop for
.
But it does not work since I have:
"0d" "1d" "2d" "3d"...
Does anyone know how to do this please?
Solution
String's argument support doesn't work like printf. It's all documented. What you want is:
QString test = QString("%1").arg(i, 6, 10, QLatin1Char('0'));
OTHER TIPS
You could try the following:
int a = 12;
QString test = QString("%1").arg(a, 6, 'g', -1, '0');
qDebug() << test; // outputs "000012"
Have a look in the documentation for QTextStream. There are a number of settings for formatting as well as a number of handy manipulators. This is analogous to the text manipulators from STL iostream