私はc++で私の人生の新しい段階を始めようとしているacプログラマーです(私はまだ以下のprintfを使用していることを知っていますが、それはフォーマットがとても簡単だからです)。オブジェクトのメンバー関数からデータファイルの最初のバイトを出力しようとしています。データを読み取る前にストリームバッファが破棄されていると思いますが、どうすればよいかわかりません。
私のクラスは次のようになります
class MyParser {
    MyParser(string filepath);
    void readHeader();
    streambuf *pbuf;
    long size;
}
私のコンストラクターはファイルを開き、バッファーを取り出し、最初のバイトを出力して戻ります。(私pbufはこのコードの終わりで死にかけていると思います)。このコードは出力しますFirst Byte (in constructor): 0x8C
MyParser::MyParser(string filepath) {
    ifstream file(filepath.c_str(), ios::in | ios::binary)
    pbuf = file.rdbuf();
    size = pbuf->pubseekoff(0,ios::end,ios::in);
    pbuf->pubseekpos(0,ios::in);
    unsigned char byte = pbuf->sgetc();
    printf("First Byte (in constructor): 0x%02X\n", byte);
    return;
}
私の読み取りヘッダーは最初のバイトをダンプしていますが、出力に基づいてすべてが表示されますFirst Byte (in readHeader): 0xFF
void MyParser::readHeader() {
    unsigned char byte = pbuf->sgetc();
    printf("First Byte (in readHeader): 0x%02X\n", byte);
}
私のメインは単にパーサーを作成し、readHeaderを試みます
void main() {
    MyParser parser("../data/data.bin");
    parser.readHeader();
}
私の問題の解決策はストリームバッファを作成することだと思いますが、私にnewはnew streambuf(file.rdbuf())うまくいきません。何かアドバイス?