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'));
Share:
16,051
Jeanstackamort
Author by

Jeanstackamort

Updated on June 04, 2022

Comments

  • Jeanstackamort
    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 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?

    • RobbieE
      RobbieE about 10 years
      If you read the documentation of QString::arg(), you will understand the results you're getting
  • Kuba hasn't forgotten Monica
    Kuba hasn't forgotten Monica about 10 years
    This unnecessarily uses the arg overload for doubles. It will fail spectacularly if the platform int is a 64 bit type, or if the declaration ever gets changed to qint64. 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's double type is equal to float and happens to be 32 bits wide (as allowed by the standard). So this is pretty much unportable and not recommended at all.