バイナリ値の書き込み/読み取りで「奇妙な」問題が発生しました。
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操作の後。それが正しいか?私は何か間違ったことをしていますか?