假设我有一个包含 N 个参数的列表,我想将其传递给 QString。数字 N 是可变的并在运行时确定。
如果我这样做:
QString myString = "%1, %2,..."
for(auto arg : list) {
myString = myString.arg(arg);
}
我创建了很多字符串副本。有更有效的方法吗?我查看了类似 QString::args(SomethingIteratable) 的文档,但什么也没找到。
保持简单,只需提前
reserve
一些记忆并做尽可能简单的事情:
QString myString;
myString.reserve(1'000'000);
{
QTextStream ts(&myString);
for (auto arg: list) {
ts << arg << ", ";
}
}
myString.resize(myString.size() - 2);
myString.squeeze();