Saya ingin "merangkai" nomor dan menambahkan bantalan-nol, seperti bagaimana printf("%05d")
menambahkan nol di depan jika nomor tersebut kurang dari 5 digit.
94
Gunakan ini:
QString number = QStringLiteral("%1").arg(yourNumber, 5, 10, QLatin1Char('0'));
5 di sini sesuai dengan 5 in printf("%05d")
. 10 adalah radix, Anda dapat menempatkan 16 untuk mencetak nomor dalam hex.
"%1"
?%2
dll. Lihat doc.qt.io/qt-5/qstring.html#argQString QString :: rightJustified (lebar int, QChar fill = QLatin1Char (''), bool truncate = false) const
int myNumber = 99; QString result; result = QString::number(myNumber).rightJustified(5, '0');
hasilnya sekarang 00099
sumber
Contoh Singkat:
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
sumber
Mencoba:
QString s = s.sprintf("%08X",yournumber);
EDIT: Menurut dokumen di http://qt-project.org/doc/qt-4.8/qstring.html#sprintf :
Peringatan : Kami tidak merekomendasikan penggunaan QString :: sprintf () dalam kode Qt baru. Sebagai gantinya, pertimbangkan untuk menggunakan QTextStream atau arg (), yang keduanya mendukung string Unicode dengan mulus dan aman untuk tipe. Berikut adalah contoh yang menggunakan QTextStream:
QString result; QTextStream(&result) << "pi = " << 3.14; // result == "pi = 3.14"
Baca dokumen lain untuk fitur yang hilang dari metode ini.
sumber
Saya menggunakan teknik sejak VB 5
QString theStr=QString("0000%1").arg(theNumber).right(4);
sumber
Saya mencoba ini (yang berhasil, tetapi tidak praktis).
QString s; s.setNum(n,base); s = s.toUpper(); presision -= s.length(); while(presision>0){ s.prepend('0'); presision--; }
sumber