在C ++中向/从文件流写入/读取二进制字节/整数/长整数

时间:2015-05-05 13:12:16

标签: c++ io binary fstream blitzmax

所以我最近才开始尝试使用C ++,而且我已经学会了基础知识。我想知道的是如何在文件中写入/读取字节/整数/长整数。

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

File format specification

我已经用另一种语言编写了该程序,我想用C ++重写我的程序。我之前使用的语言称为BlitzMax,并且该语言函数已经实现,只需要调用WriteByte,ReadByte,WriteInt,ReadInt等等。如果你们这些人会很友好地写(或者至少链接我的源代码)函数我需要,非常感谢。如果你能为我写这些,你能解释一下它们是如何工作的吗?

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

编辑:这里,根据要求,代码有点做我需要的。它确实将二进制文件中的int 50写入文件,但就我所能做的那样。我仍然无法理解某些部分(在谷歌中找到了代码,我对它进行了一些编辑)。我仍然需要一种写字节和长字的方法。

#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;
}

1 个答案:

答案 0 :(得分: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的更多信息。

但要注意二进制读/写时的可移植性问题。可移植性问题可能与您的计算机上整数可以是4个字节并且在其他计算机上具有不同大小这一事实有关。字节序也是另一个问题。编码浮点数是二进制的也不可移植(here)。