Все любят
QString("Put something here %1 and here %2")
.arg(replacement1)
.arg(replacement2);
но все становится зудящим, как только у вас появляется малейший шанс, что replacement1
на самом деле содержит %1
или даже %2
где-либо. Затем второй QString::arg()
заменит только вновь введенный %1
или оба %2
вхождения. Во всяком случае, вы не получите буквальный "%1"
, который вы, вероятно, намеревались.
Есть ли какой-нибудь стандартный прием для преодоления этого?
Если вам нужен пример для игры, возьмите
#include <QCoreApplication>
#include <QDebug>
int main()
{
qDebug() << QString("%1-%2").arg("%1").arg("foo");
return 0;
}
Это выведет
"foo-%2"
вместо
"%1-foo"
как и следовало ожидать (нет).
qDebug() << QString("%1-%2").arg("%2").arg("foo");
дает
"foo-foo"
и
qDebug() << QString("%1-%2").arg("%3").arg("foo");
дает
"%3-foo"