所以我最近才开始尝试使用C ++,而且我已经学会了基础知识。我想知道的是如何在文件中写入/读取字节/整数/长整数。
首先,我想告诉你为什么我需要它。基本上我想从一个具有特殊格式的文件中读取数据。所有数据都以二进制形式写入该文件中。
我已经用另一种语言编写了该程序,我想用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;
}
答案 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)。