二进制文件的读写是以字节为单位进行操作的,举例如下:
#include<iostream>
#include<fstream>
#include<string.h> //运行strcpy函数需要此头文件
using namespace std;
class Student{
private:
char Name[10];
char Class[10];
char Sex;
int Age;
public:
Student(){
}
Student(char *Name,char *Class,char sex,int age){
strcpy(this->Name,Name);
strcpy(this->Class,Class);
Sex=sex;
Age=age;
}
void Showme(){
cout<<Name<<'\t'<<Class<<'\t'<<Sex<<'\t'<<Age<<endl;
}
};
int main(){
Student stu[3]={
Student("张三","材料",'m',27),
Student("李四","机械",'m',26),
Student("王五","生物",'f',25)};
//打开文件
ofstream file1("test.dat",ios::binary);
if(!file1) {
cout<<"文件打开失败"<<endl;
return 1;
}
//写文件
for(int i=0;i<3;i++){
file1.write((char *)&stu[i],sizeof(stu[i]));
}
file1.close();
//打开文件
ifstream file2("test.dat",ios::binary);
if(!file2) {
cout<<"文件打开失败"<<endl;
return 1;
}
//读文件
Student stu2;
while(file2){
file2.read((char *)&stu2,sizeof(stu2));
if (file2) stu2.Showme();
}
file2.close();
return 0;
}
运行结果:
张三 材料 m 27
李四 机械 m 26
王五 生物 f 25