我一直在使用 QString::number () 将数字转换为字符串很长时间,现在我想知道是否有比以下更好的方法:
int i = 0;
QString msg = QString ("Loading %1").arg (QString::number (i));
我怎样才能节省 QString::number () ?我检查了文档,似乎只有“%1”适用,没有其他类似“%d”的东西可以工作
QString 的arg()
函数确实实现了许多不同的类型并自动检测您提供的内容。像这样为单个arg()
调用提供多个参数
// Outputs "one two three"
QString s = QString("%1 %2 %3").arg("one", "two", "three")
仅针对 QString (因此const char*
)参数实现。
但是,您可以将 arg 调用链接在一起并仍然使用编号系统:
int i = 5;
size_t ui = 6;
int j = 12;
// Outputs "int 5 size_t 6 int 12"
qDebug() << QString("int %1 size_t %2 int%3").arg(i).arg(ui).arg(j);
// Also outputs "int 5 size_t 6 int 12"
qDebug() << QString("int %1 int %3 size_t %2").arg(i).arg(j).arg(ui);
可以arg()
这样直接使用
int i = 0;
QString msg = QString ("Loading %1").arg(i);
Qt 会自动为你转换
查看 QString 文档。你有很多 ::arg 方法重载,它们采用不同的类型。QString 不需要知道 %n 下是什么类型,替换 %n 的方法会知道它并输入正确的值。