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



我想在字符串上使用.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);

arg 替换 % 后具有最小值的序列。范围必须介于 1 和 99 之间。因此,您不必使用索引1您可以使用两位数字代替一位数字。

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

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

这应该会给你预期的结果(我已经在 qt 5.4 上测试过它,它运行良好)。

我还测试了问题下的解决方案表单注释,它可以:

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

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也可以。

尝试以下方法之一:

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

最新更新