QString :: arg()在占位符后面带有数字

时间:2016-02-19 23:32:38

标签: qt qstring

我想在字符串上使用.arg()。这是一个例子:

qDebug() << QString("%11%2").arg(66).arg(77);

我想得到输出66177但当然这不是实际输出,因为%11被解释为占位符#11而不是占位符#1后跟文字1

是否有比以下更好的解决方案?

qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77);

3 个答案:

答案 0 :(得分:2)

arg替换%后具有最低值的序列。范围必须在1到99之间。 因此,您不必使用1索引,您可以使用两位数而不是一位数。

试试这个,看看会发生什么:

qDebug() << QString("%111%22").arg(66).arg(77);

这应该给你预期的结果(我在qt 5.4上测试它并且它完美地工作)。

我还在问题下测试了解决方案表单评论,它适用于:

qDebug() << QString("%011%02").arg(66).arg(77);

答案 1 :(得分:1)

arg()的意义在于它正在取代从%1%99的所有内容,这就是为什么你不应该%11。有几种方法可以避免这种情况。

你的方式很好,你可以在你的代码中提前1:

qDebug() << QString("%1%2%3").arg(66).arg(1).arg(77);

或者你可以:

qDebug() << QString("%1").arg(66) + "1" + QString("%1").arg(77);

使用QString::number也可以在评论中指定。

答案 2 :(得分:1)

请尝试以下方法之一:

  • QString::number(66) + "1" + QString::number(77)
  • QString("%1 1 %2").arg(66).arg(77).replace(" ", "")