繁体   English   中英

fstream二进制读/写行为

[英]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);

每次获取操作之后。 这是正确的吗? 我做错什么了吗?

使用read()

get()将最多n-1个字符或\\ n的EOF或错误(以1st为准)提取到C样式字符串中

读取最多提取n个字符或EOF(以1st为准)到任何存储位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM