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有以下值:
in readHeader: 0,3,10
in writeHeader: 0,4,12
这导致我必须写一个:
file.seekg(1, std::ios_base::cur);
每次get操作后。对吗?我做错什么了吗?
使用read().
get()提取最多n-1个字符或EOF或错误的n(以第一个为准)到C风格字符串
读取提取最多n个字符或EOF(取第一个)到任何内存位置。
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 有根的二进制搜索树.保留与其父级的链接
- 多态二进制函数
- 在fstream期间忽略空行
- 正在读取二进制文件(is_open)
- visual在c++中将十进制数转换为二进制数
- 将二进制数据写入C 中的Fstream
- 使用MMAP与FSTREAM或FOPEN访问二进制文件
- 无法使用 fstream 从二进制文件中读取字符串,而是显示奇怪的符号
- 使用fstream从二进制文件中读取并将结果存储在向量中
- fstream从二进制文件的末尾删除n个字节
- 使用Fstream读取二进制文件
- C++ fstream - 无法使用二进制格式从文件中读取
- 使用fstream方法读取二进制数据
- C ++ fstream 写入不适用于没有 seekg 和 seekp 的二进制文件
- C++:FStream认为它已经达到了二进制文件的EOF
- 使用fstream在c++中读写二进制文件
- 在二进制整数 (C++) 中读取后,fstream 是否移动到下一个位置
- 打开一个fstream进行读写(二进制)
- Fstream二进制读/写行为