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