我想“字符串化”一个数字并添加零填充,例如printf("%05d")
如果数字少于5位,将如何添加前导零。
Answers:
用这个:
QString number = QStringLiteral("%1").arg(yourNumber, 5, 10, QLatin1Char('0'));
这里的5对应于5 in printf("%05d")
。10是基数,您可以输入16以十六进制打印数字。
"%1"
?
%2
等等。请参阅doc.qt.io/qt-5/qstring.html#arg
简短示例:
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
尝试:
QString s = s.sprintf("%08X",yournumber);
编辑:根据http://qt-project.org/doc/qt-4.8/qstring.html#sprintf上的文档 :
警告:我们不建议在新的Qt代码中使用QString :: sprintf()。相反,可以考虑使用QTextStream或arg(),它们都无缝支持Unicode字符串并且类型安全。这是一个使用QTextStream的示例:
QString result;
QTextStream(&result) << "pi = " << 3.14;
// result == "pi = 3.14"
阅读其他文档,了解此方法缺少的功能。
我从VB 5开始就使用一种技术
QString theStr=QString("0000%1").arg(theNumber).right(4);