Qt предоставляет свои собственные способы делать такие вещи.Хорошо это или нет, но сомнительно, но Qt idiomatic будет
QString result;
result.reserve(string.size());
foreach (const QChar& c, string) {
if (is_good(c)) {
result += c;
}
}
Конечно, вы можете сделать это с лямбдами и std::for_each
std::for_each(string.begin(), string.end(),
[&result](QChar c)
{
if (is_good(c)) {result += c; }
}
);
, но это не такQt
idiomatic.
Обратите внимание, что удаление символов из строки выполняется медленнее, а затем добавление новых, если место зарезервировано, поэтому первый пример кода выполняется быстро.