【发布时间】:2011-09-15 19:49:17
【问题描述】:
我正在尝试使用 std::istream 作为数据源。我想在 istream 的流缓冲区中放置自定义二进制数据,以便以后可以从 istream 中检索它。
我已经阅读了关于 boost::asio::streambuf 以及它如何用于完全满足我的需求,但使用套接字作为数据源而不是内存缓冲区,这是我想要使用的。
根据我对documentation 的了解,步骤应该是:
- 创建 boost::asio::streambuf
- 创建一个传递 streambuf 的 std::istream
- 调用 boost::asio::streambuf::prepare 以获取代表输出序列的缓冲区列表。
- 以某种方式写入输出序列。
- 调用 boost::asio::streambuf::commit 将我在输出序列中写入的内容移至输入序列。
- 通常使用 std::stream::read 从步骤 2 中的 std::istream 读取。
我不知道如何解决第 4 步,所以我不知道我是否朝着正确的方向前进。
描述的步骤是否正确?如果是这样,如何处理第 4 步?
【问题讨论】:
-
@Xeo 这正是我想要做的,但使用二进制数据而不是文本。据我了解,字符串流是不可能的。我对吗?是否有任何其他流实现可以用于此?
标签: c++ boost boost-asio