如何高效地连接QString?

3
我想将QString的树形结构连接成一个单独的QString。如果我理解正确,QString类似于Java字符串是不可变的,因此使用Java的StringBuilder的原因应该也适用于这里。
使用%操作符似乎只能提高单个语句的效率,因此在需要在多个嵌套循环中连接时可能没有太大帮助。
可以使用std :: stringstream,但这意味着首先要将每个单独的QString转换为C字符串或std-string,这可能会影响性能。
使用QTextStream是否有帮助?还是有更好的选择?

1
QString并非不可变。如果您查看文档,会发现有无数种方法可以追加、插入等操作。 - G.M.
1
你可以使用QString::append()方法。 - Muhammet Ali Asan
QStringBuilder?http://blog.qt.io/blog/2011/06/13/string-concatenation-with-qstringbuilder/ - DAle
4
QStringBuilder 是一个好的想法,但是它们稍微改变了它的使用方式,请查看 QString 的最新文档中的 更有效的字符串构建 - xander
1个回答

1
如果你使用+运算符或append方法连接大量字符串,由于内存重新分配,这是低效的。为了避免这种重新分配,您需要计算连接结果所需的内存数量,将该数量分配给char*缓冲区,在缓冲区的适当位置复制每个要连接的字符串的原始数据(例如通过memcpy)。然后从char*缓冲区构造结果字符串对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接