二进制文件读写操作----将学生信息写入到文件中,再从文件中读取信息
(1)将一学生信息以二进制方式存储到文件中
/*将一学生信息写入到文件中进行存储*/
#include <iostream>
#include <fstream>
using namespace std;
struct student
{
char studentID[20]; //学号
char name[20]; //姓名
char sex; //性别
int age; //年龄
};
int main()
{
ofstream outFile("gyy5.txt",ios::out|ios::binary); //建立文件输出流,以二进制方式开打文件进行关联
if(!outFile)
{
cout<<"文件打开失败!退出程序..."<<endl;
exit(1);
}
student s;
cout<<"请输入要存储的学生信息:"<<endl;
cout<<"学号:";
cin>>s.studentID;
cout<<"姓名:";
cin>>s.name;
cout<<"性别:";
cin>>s.sex;
cout<<"年龄:";
cin>>s.age;
outFile.write((char *)&s,sizeof(s)); //往文件中存储数据
cout<<"数据存储成功"<<endl;
outFile.close(); //关闭文件流所关联的文件
return 0;
}
(2)从刚才建立的文件中读取数据在屏幕上显示
/*从文件中将一学生信息读出显示在屏幕上*/
#include <iostream>
#include <fstream>
using namespace std;
struct student
{
char studentID[20]; //学号
char name[20]; //姓名
char sex; //性别
int age; //年龄
};
int main()
{
ifstream inFile("gyy5.txt",ios::in|ios::binary); //建立文件输入流,以二进制方式开打文件进行关联
if(!inFile)
{
cout<<"文件打开失败!退出程序..."<<endl;
exit(1);
}
student s;
inFile.read((char *)&s,sizeof(s)); //从文件中读取sizeof(s)字节大小的内容存入到s中
cout<<"显示读取的学生信息:"<<endl;
cout<<"学号:"<<s.studentID<<endl;
cout<<"姓名:"<<s.name<<endl;
cout<<"性别:"<<s.sex<<endl;
cout<<"年龄:"<<s.age<<endl;
cout<<"数据读取成功"<<endl;
inFile.close(); //关闭文件流所关联的文件
return 0;
}
(3)将写、读放到一个文件中,用fstream即可以进行二进制文件的输入也可以输出
/*先将一学生信息写入到文件中进行存储*/
/*再从该文件中将一学生信息读出显示在屏幕上*/
#include <iostream>
#include <fstream>
using namespace std;
struct student
{
char studentID[20]; //学号
char name[20]; //姓名
char sex; //性别
int age; //年龄
};
int main()
{
fstream myFile("gyy6.txt",ios::in|ios::out|ios::binary); //建立文件流,即可以输入也可以输出,以二进制方式开打文件进行关联
if(!myFile)
{
cout<<"文件打开失败!退出程序..."<<endl;
exit(1);
}
student s;
cout<<"请输入要存储的学生信息:"<<endl;
cout<<"学号:";
cin>>s.studentID;
cout<<"姓名:";
cin>>s.name;
cout<<"性别:";
cin>>s.sex;
cout<<"年龄:";
cin>>s.age;
myFile.write((char *)&s,sizeof(student)); //往文件中存储数据
cout<<"数据存储成功"<<endl<<endl<<endl;;
student s1;
myFile.seekg(0,ios::beg); //读指针定位到文件开头
myFile.read((char *)&s1,sizeof(student)); //从文件中读取sizeof(student)字节大小的内容存入到s1中
cout<<"显示读取的学生信息:"<<endl;
cout<<"学号:"<<s1.studentID<<endl;
cout<<"姓名:"<<s1.name<<endl;
cout<<"性别:"<<s1.sex<<endl;
cout<<"年龄:"<<s1.age<<endl;
cout<<"数据读取成功"<<endl;
myFile.close(); //关闭文件流所关联的文件
return 0;
}