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