#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
class CStudent
{
public:
char szName[8];
int age;
};
int main()
{
CStudent s;
int a = 1254883;
int b = 22;
ofstream outFile("students.dat", ios::out | ios::binary);
strcpy(s.szName, "abc");
s.age=25;
outFile.write((char*)&s, sizeof(s));
cout << "student size " << sizeof(s) <<endl;
outFile.write((char*)&a, sizeof(a));
outFile.write((char*)&b, sizeof(b));
outFile.close();
return 0;
}
以上面的代码为例,会给student.dat文件里写入三部分数据,一个结构体,两个int值
用xxd命令打开student.dat,显示如下:
前面8个字节 是student.szname,只有前3个字节的位置有数据,就是abc的十六进制
然后是19000000,4个字节,忘记了这是大端还是小端了,读的时候就是00000019,十进制就是25
然后是e3251300,4个字节,反过来就是001325e3,十进制就是1254883
最后4个字节就是16000000,反过来就是16,十进制就是22
整个文件一共20个字节