有没有一种有效的方法可以通过避免复制来将参数列表传递给 QString?

问题描述 投票:0回答:1

假设我有一个包含 N 个参数的列表,我想将其传递给 QString。数字 N 是可变的并在运行时确定。

如果我这样做:

QString myString = "%1, %2,..."
for(auto arg : list) {
  myString = myString.arg(arg);
}

我创建了很多字符串副本。有更有效的方法吗?我查看了类似 QString::args(SomethingIteratable) 的文档,但什么也没找到。

c++ qt qstring
1个回答
0
投票

保持简单,只需提前

reserve
一些记忆并做尽可能简单的事情:

QString myString;
myString.reserve(1'000'000);
{
  QTextStream ts(&myString);
  for (auto arg: list) {
    ts << arg << ", ";
  }
}
myString.resize(myString.size() - 2);
myString.squeeze();
© www.soinside.com 2019 - 2024. All rights reserved.