我想用std :: istream作为数据源。我想将自定义二进制数据放在istream的流缓冲区中,以便稍后可以从istream中检索它。如何手动将数据放入boost :: asio :: streambuf以便稍后使用std :: istream读取它?
我已阅读关于boost :: asio :: streambuf以及它如何用来做我想要的,但使用套接字作为数据源而不是内存缓冲区,这是我想要使用的。
从我从documentation理解,步骤应该是:
- 创建一个boost :: ASIO ::流缓冲
- 创建一个std :: istream的传递流缓冲
- 调用提升: :asio :: streambuf ::准备获取表示输出序列的缓冲区列表。
- 以某种方式写入输出序列。
- 调用boost :: asio :: streambuf :: commit将我在输出序列中写入的内容移动到输入序列。
- 通常使用std :: stream :: read从步骤2的std :: istream中读取。
我不知道如何解决第4步,所以我不知道即使我正朝着正确的方向前进。
所描绘的步骤是否正确?如果是这样,如何解决第4步?
相关:是否有可能从CIN “准备” 输入?](http://stackoverflow.com/questions/6013638/is-it-possible-to-prepare-input-from -cin)。 – Xeo 2011-06-15 19:31:43
@Xeo这正是我想要做的,但用二进制数据而不是文本。据我所知,stringstream是不可能的。我对吗?是否有任何其他流程实现可用于此? – ncasas 2011-06-15 20:05:35