[英]fstream binary read/write behaviour
我在写入/读取二进制值时遇到“奇怪”的问题:
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);
每次获取操作之后。 这是正确的吗? 我做错什么了吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.