【问题标题】:Boost asio reading from the streambuffer after async_read_until stripes spaces在 async_read_until 条纹空间之后提高从流缓冲区中读取的 asio
【发布时间】: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


【解决方案1】:

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

获得其他行为

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 2015-11-04
    • 2018-04-05
    • 2018-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    相关资源
    最近更新 更多