Все любят
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"
operator + ()
, но в некоторых местах, например. перевод с использованиемtr()
, хотелось бы сохранить возможность переупорядочивать аргументы в шаблоне. - person Tilman Vogel   schedule 09.03.2011%1
для замены where и%2
для замены what — теперь в некоторых случаях вы просто заменяете where строкой, а в других вам нужно число. В случае строки вы, возможно, захотите поместить вокруг нее апострофы, в случае числа хэштег перед ним будет полезен для улучшения читаемости. Теперь вы можете использовать 1-й вызов аргумента, чтобы заменить%1
на f.e."#%3"
и третий вызов аргумента для вставки номера. - person St0fF   schedule 02.06.2017