Все любят
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"