2016-06-12 14 views
1

抽出を行わずにstd::istreamから一定のバイト数を読み取る方法は?たとえば、変数szのタイプがsize_tであり、istreamからsizeof(size_t)バイトを読みたいと思います。C++ std :: istreamから一定数のバイトを読み取る方法

void foo(std::istream& is) { 
    if(is.rdbuf()->in_avail() < sizeof(size_t)) return; 
    // how to read to sz from istream is without extraction (advancing pointers) 
    size_t sz; 
} 
+1

「抽出をしないで」と言うとどういう意味ですか? readメソッドはどうですか?それはあなたの "抽出をしない"に適用されていますか? – AnatolyS

+0

'固定バイトデータ'は無意味です。あなた自身の用語を発明しないでください。 – EJP

答えて

1

peekは、次の文字のみを抽出することができます。

このように、戦略を変更する必要があります。抽出を避ける代わりに、必要な文字を抽出し、ストリームの状態を復元します。ストリームがシークをサポートしている場合、それは可能である:現在位置

  • 以前位置
  • にジャンプするバイト

  • 使用seekgを抽出取得する

    • 使用tellgそうしないと、必要があるかもしれません「抽出せずに読む」ことによって達成しようとしていることを何でもするためにあなた自身のバッファを実装することです。

  • 関連する問題