我有一种情况,我从结构中读取数据并继续将其附加到字符串,以便它可以通过套接字发送。当数据相当大时,此操作需要花费大量时间。有人可以建议任何替代方案吗?
我有一个结构
struct fileInfo { int file_id; char filename [16]; 双标签; }
我做了一个std :: stringstream>> file_id和stringstream.str() 对每个值重复此操作,将其附加到字符串并发送
答案 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()来避免以后多余的重新分配。