我想用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