Writing/reading 二进制 bytes/ints/longs to/from C++ 文件流

Writing/reading binary bytes/ints/longs to/from file stream in C++

所以我最近才开始尝试 C++,并且我已经学习了基础知识。我只想知道如何 write/read bytes/ints/longs to/from 一个文件。

首先,我想告诉你我为什么需要它。基本上我想从一个有特殊格式的文件中读取数据。所有数据都以二进制形式写入该文件。

File format specification

我已经用另一种语言编写了该程序,我想用 C++ 重新编写我的程序。我以前使用的语言称为 BlitzMax,在该语言中函数已经实现,仅称为 WriteByte、ReadByte、WriteInt、ReadInt 等。如果你们愿意写(或者至少 link 给我源代码) 我需要的功能,将不胜感激。如果你愿意为我编写它们,你能解释一下它们是如何工作的吗?

非常感谢所有帮助我的人! :)

编辑:在这里,根据要求,代码在某种程度上可以满足我的需要。它确实以二进制形式将 int 50 写入文件,但这是我所能做到的。有些部分我还是看不懂(代码在google中找到,我稍微编辑了一下)。而且我仍然需要一种写入字节和长整数的方法。

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    int num = 50
    ofstream file("file.txt", ios::binary);
    file.write(reinterpret_cast<const char *>(&num), sizeof(num));
    file.close ();
    return 0;
}

同理:

int num = 50;
unsigned char x = 9;
float t = 9.0;

ofstream file("file.bin", ios::binary);
file.write(reinterpret_cast<const char *>(&num), sizeof(num));
file.write(reinterpret_cast<const char *>(&x), sizeof(x));
file.write(reinterpret_cast<const char *>(&t), sizeof(t));
file.close ();
return 0;

有关 reading 的更多信息。

但在执行二进制文件时要注意可移植性问题reading/writing。可移植性问题可能与以下事实有关:整数在您的机器上可以是 4 个字节,而在其他机器上具有不同的大小。字节顺序也是另一个问题。编码浮点数是二进制的也不可移植(here)。