【发布时间】:2021-07-03 15:25:06
【问题描述】:
所以在我使用async_read_until 读取到分隔符之后,缓冲区中还剩下一些额外的数据,我一直在尝试像这样读取它
void Connection::read_left_over(std::string &req, size_t &bytes) {
std::istream_iterator<char> itr(this->input_stream);
std::cout << buffer_.in_avail() << std::endl; // returns the size of the data with spaces
bytes -= size_t(buffer_.in_avail());
req.append(itr, std::istream_iterator<char>());
std::cout << buffer_.in_avail() << std::endl; // returns 0
std::cout << req << std::endl;
}
但是问题是被读取的文本被去掉了空格,尽管在读取缓冲区之前说它有一个带空格的数据,读取之后它返回 0。是否有任何理由说明为什么会发生这种情况,如果有的话有办法克服吗?
【问题讨论】:
-
istream_iterator读取格式化输入(即跳过空格)。你可能想要std::istreambuf_iterator。 -
就是这样。谢谢!
标签: c++ boost io boost-asio