Bir sayıyı "dizgileştirmek" printf("%05d")
ve sayı 5 basamaktan azsa baştaki sıfırları nasıl ekleyeceğim gibi sıfır dolgusu eklemek istiyorum .
Yanıtlar:
Bunu kullan:
QString number = QStringLiteral("%1").arg(yourNumber, 5, 10, QLatin1Char('0'));
Burada 5, 5 inç'e karşılık gelir printf("%05d")
. 10 taban, sayıyı onaltılık olarak yazdırmak için 16 koyabilirsiniz.
"%1"
?
%2
vb. Bkz. 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');
sonuç şimdi 00099
Kısa Örnek:
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
Deneyin:
QString s = s.sprintf("%08X",yournumber);
DÜZENLEME: http://qt-project.org/doc/qt-4.8/qstring.html#sprintf adresindeki belgelere göre :
Uyarı : Yeni Qt kodunda QString :: sprintf () kullanılmasını önermiyoruz. Bunun yerine, her ikisi de Unicode dizelerini sorunsuz bir şekilde destekleyen ve tür açısından güvenli olan QTextStream veya arg () kullanmayı düşünün. İşte QTextStream kullanan bir örnek:
QString result;
QTextStream(&result) << "pi = " << 3.14;
// result == "pi = 3.14"
Bu yöntemde eksik olan özellikler için diğer belgeleri okuyun.
VB 5'ten beri bir teknik kullanıyorum
QString theStr=QString("0000%1").arg(theNumber).right(4);