std :: string追加得太慢?

时间:2010-09-06 08:42:59

标签: c++

我有一种情况,我从结构中读取数据并继续将其附加到字符串,以便它可以通过套接字发送。当数据相当大时,此操作需要花费大量时间。有人可以建议任何替代方案吗?

我有一个结构

  

struct fileInfo    {       int file_id;       char filename [16];       双标签;     }

我做了一个std :: stringstream>> file_id和stringstream.str() 对每个值重复此操作,将其附加到字符串并发送

4 个答案:

答案 0 :(得分:6)

来自std::ostringstream

<sstream>专为该操作模式而设计。

ostringstream my_text;
my_text << "hello " << 2 << foo << endl; // efficiently catenate

socket.send( my_text.str() ); // get a std::string to handle data

答案 1 :(得分:0)

也许您应该单独发送字符串。如果你有一个流式套接字,这对于在另一端接收数据的方式没有任何影响。

答案 2 :(得分:0)

一种选择是使用std::stringstream。如果您提供更具体的信息,则只能提供更具体的帮助。你流式传输什么样的数据?数据块有多大?

答案 3 :(得分:0)

如果你可以粗略估计一下字符串的大小,你可以先使用std :: string :: reserve()来避免以后多余的重新分配。