在 async_read_until 条带化空间后提升从流缓冲区的 asio 读取

Boost asio reading from the streambuffer after async_read_until stripes spaces

所以在我使用 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;
}

但问题是被读取的文本被剥离了空格,尽管在读取缓冲区之前说它有一个带空格的数据并且在读取之后 returns 0。有什么原因可以解释为什么发生这种情况,如果有的话,有什么办法可以克服这种情况?

这是 istream 的行为。您可以使用

获得其他行为