【发布时间】:2018-05-03 22:35:45
【问题描述】:
我正在处理boost::asio::streambuf,发现我可以使用它发送/获取一个结构,但是当我发送一个结构时,我无法得到它,因为我已经发送了它。文档说应该使用commit() 和consume(),但是我应该在哪里使用它们呢?
struct person
{
int m_id;
std::string m_message;
};
std::istream& operator>>(std::istream& in, struct person& p)
{
return in >> p.m_id >> p.m_message;
}
std::ostream& operator<<(std::ostream& out, struct person& p)
{
return out << p.m_id << " " << p.m_message;
}
int main()
{
boost::asio::streambuf buf;
std::ostream out(&buf);
person p;
p.m_id = 1;
p.m_message = "Hello World!";
out << p;
std::istream in(&buf);
person p1;
in >> p1;
cout << "ID: " << p1.m_id << endl;
cout << "Message: " << p1.m_message << endl;
return 0;
}
问题在于字符串,所以当我只输入“hello”(没有世界)时,它工作正常,但如果我添加“世界!”如上所示,只是没有看到添加的“世界!”,为什么?
【问题讨论】:
标签: c++ boost-asio streambuf