我是第一次学习C ++套接字,我的例子使用了很多ostringstream。在这里使用stringstreams而不仅仅是使用字符串的目的和优势是什么?在这个例子中我认为我可以轻松地使用常规字符串。是不是使用这个ostringstream更笨重?
std::string NetFunctions::GetHostDescription(cost sockaddr_in &sockAddr)
{
std::ostringstream stream;
stream << inet_ntoa(sockAddr.sin_addr) << ":" << ntohs(sockAddr.sin_port);
return stream.str();
}
答案 0 :(得分:1)
流是缓冲区。它们不等于字符数组,例如 std::string
,它基本上是一个包含指向字符数组的指针的对象。流有它们的内在函数、操纵器、状态和运算符,已经在手。相比之下,字符串对象会有一些缺陷,例如,输出数字,缺乏像 endl 这样方便的函数,麻烦的连接,尤其是。带有函数效果(结果,由函数返回)等。String 对象为此很麻烦。
现在 std::ostringstream
是一个舒适且易于设置的缓冲区,用于格式化和准备文本形式(包括数字)的大量数据,以便进一步组合输出。此外,与简单的 ostream 对象 cout
相比,您可能有几个这样的缓冲区并根据需要调整它们。