Saya ingin "merangkai" nomor dan menambahkan bantalan-nol, seperti bagaimana printf("%05d")
menambahkan nol di depan jika nomor tersebut kurang dari 5 digit.
Jawaban:
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#arg
QString 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
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
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.
Saya menggunakan teknik sejak VB 5
QString theStr=QString("0000%1").arg(theNumber).right(4);