0

バイナリ値の書き込み/読み取りで「奇妙な」問題が発生しました。

bool readHeader(std::fstream &file)
{
    file.seekg(0);
    int a = file.tellg();
    file.get(reinterpret_cast<char*>(&a), sizeof(a));
    int b = file.tellg();
    file.get(reinterpret_cast<char*>(&b), sizeof(b));
    int c = file.tellg();
    file.seekg(32);
    return !(file.bad());
}

bool writeHeader(std::fstream &file)
{
    file.seekg(0);
    int a = file.tellg();
    file.write(reinterpret_cast<char*>(&a), sizeof(a));
    int b = file.tellg();
    file.write(reinterpret_cast<char*>(&b), sizeof(b));
    int c = file.tellg();
    file.seekg(32);
    return !(file.bad());
}

ここで、「a」はuint32_tであり、「b」はuint64_tです。

ここで奇妙なのは、変数a、b、cの値が次のとおりです。

readHeaderで:0、3、10

writeHeaderで:0、4、12

そして、この原因は、私がしなければならないことです:

file.seekg(1, std::ios_base::cur);

各get操作の後。それが正しいか?私は何か間違ったことをしていますか?

4

1 に答える 1