web-dev-qa-db-fra.com

Convertir un int en QString avec zéro padding (zéros non significatifs)

Je veux "stringifier" un nombre et ajouter des zéros, comme par exemple comment printf("%05d") ajouterait des zéros non significatifs si le nombre est inférieur à 5 chiffres.

79
elcuco

Utilisez ceci:

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

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

161
chalup

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

Le court exemple:

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
17
user1767754

Essayer:

QString s = s.sprintf("%08X",yournumber);

EDIT: Selon la documentation à http://qt-project.org/doc/qt-4.8/qstring.html#sprintf :

Warning : Nous déconseillons d'utiliser QString :: sprintf () dans le nouveau code Qt. Au lieu de cela, envisagez d'utiliser QTextStream ou arg (), qui prennent tous deux en charge les chaînes Unicode de manière transparente et respectent le type. Voici un exemple qui utilise QTextStream:

QString result;
QTextStream(&result) << "pi = " << 3.14;
// result == "pi = 3.14"

Lisez les autres documents pour connaître les fonctionnalités manquantes de cette méthode.

3
Isaac