如何有效地连接QStrings

时间:2017-06-07 08:56:03

标签: c++ qt

我想将QStrings的树结构连接成一个QString。

如果我理解正确,QStrings就像Java-Strings一样是不可变的,因此使用Java的StringBuilder的类似原因应该适用。

使用%运算符似乎只是为了提高单个语句的效率,所以可能对我没什么帮助,因为我需要连接多个嵌套循环。

我可以使用std :: stringstream,但这意味着首先将每个QString转换为C字符串或std字符串,大概是性能成本。

使用QTextStream会有帮助吗?

或者是否有更好的可能性?

1 个答案:

答案 0 :(得分:0)

如果通过+运算符或追加方法连接大量的字符串,由于内存重新分配,效率很低。 为了避免所述重新分配,你需要计算连接需要的内存量,将所述数量分配给char * buffer,将你在缓冲区中适当位置连接的每个字符串的原始数据复制(例如通过memcpy)。然后从char * buffer中构造生成的字符串对象。