Tôi muốn "xâu chuỗi" một số và thêm không đệm, giống như cách printf("%05d")
thêm các số 0 ở đầu nếu số đó nhỏ hơn 5 chữ số.
Câu trả lời:
Dùng cái này:
QString number = QStringLiteral("%1").arg(yourNumber, 5, 10, QLatin1Char('0'));
5 ở đây tương ứng với 5 in printf("%05d")
. 10 là cơ số, bạn có thể đặt 16 để in số dưới dạng hex.
"%1"
?
%2
vv Xem 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');
kết quả bây giờ là 00099
Ví dụ ngắn gọn:
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
Thử:
QString s = s.sprintf("%08X",yournumber);
CHỈNH SỬA: Theo tài liệu tại http://qt-project.org/doc/qt-4.8/qstring.html#sprintf :
Cảnh báo : Chúng tôi khuyên bạn không nên sử dụng QString :: sprintf () trong mã Qt mới. Thay vào đó, hãy cân nhắc sử dụng QTextStream hoặc arg (), cả hai đều hỗ trợ chuỗi Unicode liền mạch và an toàn về kiểu chữ. Đây là một ví dụ sử dụng QTextStream:
QString result;
QTextStream(&result) << "pi = " << 3.14;
// result == "pi = 3.14"
Đọc các tài liệu khác để biết các tính năng bị thiếu trong phương pháp này.
Tôi sử dụng một kỹ thuật kể từ VB 5
QString theStr=QString("0000%1").arg(theNumber).right(4);