Je veux "stringifier" un nombre et ajouter un remplissage à zéro, comme comment printf("%05d")
ajouterait des zéros non significatifs si le nombre est inférieur à 5 chiffres.
Réponses:
Utilisez ceci:
QString number = QStringLiteral("%1").arg(yourNumber, 5, 10, QLatin1Char('0'));
5 correspond ici à 5 pouces printf("%05d")
. 10 est la base, vous pouvez mettre 16 pour imprimer le nombre en hexadécimal.
"%1"
?
%2
etc. Voir doc.qt.io/qt-5/qstring.html#arg
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
L'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
Essayer:
QString s = s.sprintf("%08X",yournumber);
EDIT: Selon la documentation sur http://qt-project.org/doc/qt-4.8/qstring.html#sprintf :
Attention : nous ne recommandons pas 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 sont de type sécurisé. Voici un exemple qui utilise QTextStream:
QString result;
QTextStream(&result) << "pi = " << 3.14;
// result == "pi = 3.14"
Lisez les autres documents pour les fonctionnalités absentes de cette méthode.
J'utilise une technique depuis VB 5
QString theStr=QString("0000%1").arg(theNumber).right(4);