Qt: format an integer in a QString
16,051
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'));
Author by
Jeanstackamort
Updated on June 04, 2022Comments
-
Jeanstackamort almost 2 years
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 thisQString 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?
-
RobbieE about 10 yearsIf you read the documentation of QString::arg(), you will understand the results you're getting
-
-
Kuba hasn't forgotten Monica about 10 yearsThis unnecessarily uses the
arg
overload for doubles. It will fail spectacularly if the platformint
is a 64 bit type, or if the declaration ever gets changed toqint64
. By failing spectacularly I mean that there will be digits in the result that are simply wrong. It will fail just the same if the platform'sdouble
type is equal tofloat
and happens to be 32 bits wide (as allowed by the standard). So this is pretty much unportable and not recommended at all.