我想将QStrings的树结构连接成一个QString。
如果我理解正确,QStrings就像Java-Strings一样是不可变的,因此使用Java的StringBuilder的类似原因应该适用。
使用%运算符似乎只是为了提高单个语句的效率,所以可能对我没什么帮助,因为我需要连接多个嵌套循环。
我可以使用std :: stringstream,但这意味着首先将每个QString转换为C字符串或std字符串,大概是性能成本。
使用QTextStream会有帮助吗?
或者是否有更好的可能性?
答案 0 :(得分:0)
如果通过+运算符或追加方法连接大量的字符串,由于内存重新分配,效率很低。 为了避免所述重新分配,你需要计算连接需要的内存量,将所述数量分配给char * buffer,将你在缓冲区中适当位置连接的每个字符串的原始数据复制(例如通过memcpy)。然后从char * buffer中构造生成的字符串对象。