相关疑难解决方法(0)

如何在QString :: arg()的参数中处理"%1"?

所有人都喜欢

QString("Put something here %1 and here %2")
    .arg(replacement1)
    .arg(replacement2);
Run Code Online (Sandbox Code Playgroud)

但是只要你有最微小的机会replacement1实际包含%1甚至是%2任何地方,事情就会变得痒痒.然后,第二个QString::arg()将仅替换重新引入%1或两个%2事件.无论如何,你不会得到"%1"你可能想要的文字.

是否有任何标准技巧可以克服这个问题?

如果你需要一个例子来玩,请拿这个

#include <QCoreApplication>
#include <QDebug>

int main()
{
    qDebug() << QString("%1-%2").arg("%1").arg("foo");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这将输出

"foo-%2"
Run Code Online (Sandbox Code Playgroud)

代替

"%1-foo"
Run Code Online (Sandbox Code Playgroud)

可能是预期的(不是).

    qDebug() << QString("%1-%2").arg("%2").arg("foo");
Run Code Online (Sandbox Code Playgroud)

"foo-foo"
Run Code Online (Sandbox Code Playgroud)

    qDebug() << QString("%1-%2").arg("%3").arg("foo");
Run Code Online (Sandbox Code Playgroud)

"%3-foo"
Run Code Online (Sandbox Code Playgroud)

qstring qt placeholder string-formatting

24
推荐指数
2
解决办法
6万
查看次数

标签 统计

placeholder ×1

qstring ×1

qt ×1

string-formatting ×1