112 votes

Convertir un int en QString avec zéro padding (zéros en tête)

Je veux "stringifier" un nombre et ajouter des zéros, comme comment printf("%05d") ajouteraient des zéros en tête si le nombre est inférieur à 5 chiffres.

206voto

chalup Points 4215

Utilisez ceci :

QString number = QStringLiteral("%1").arg(yourNumber, 5, 10, QLatin1Char('0'));

5 correspond ici à 5 en printf("%05d"). 10 est le radix, vous pouvez mettre 16 pour imprimer le nombre en hexadécimal.

58voto

QString QString : :rightJustified ( int width, QChar fill = QLatin1Char( ' ' ), bool truncate = false ) const

int myNumber = 99;
QString result;
result = QString::number(myNumber).rightJustified(5, '0');

le résultat est maintenant 00099

20voto

user1767754 Points 460

Exemple court :

int myNumber = 9;

//Arg1: the number
//Arg2: how many 0 you want?
//Arg3: The base (10 - decimal, 16 hexadecimal - if you don't understand, choose 10)
//      It seems like only decimal can support negative numbers.
QString number = QString("%1").arg(myNumber, 2, 10, QChar('0')); 

Output will be: 09

-1voto

elcuco Points 3953

J'essayais cela (ce qui fonctionne, mais encombrant).

QString s;
s.setNum(n,base);
s = s.toUpper();
presision -= s.length();
while(presision>0){
    s.prepend('0');
    presision--;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X