二进制读写文件,不仅仅可以操作内置的数据类型,甚至可以操作自定义的数据类型。
写文件
//自定义数据类型Person
class Person {
public:
char name[64];
int age;
}
void writeFile() {
//创建流对象
ofstream ofs;
//二进制的方式打开文件
ofs.open("person.txt", ios::out | ios::binary);
//可以直接创建流对象的同时打开文件
//ofstream ofs("person.txt", ios::out | ios::binary);
//写文件
Person person = { "张三" , 22};
ofs.write((const char*)&person, sizeof(person));
//关闭文件
ofs.close();
}
写对象二进制的方式,通过文本文件打开,会发现乱码现象。
读文件
void readFile() {
//创建流对象
ifstream ifs;
//打开文件
ifs.open("test.txt", ios::in | ios::binary);
//文件是否打开成功
if(ifs.is_open()){
//读文件
Person person;
ifs.read((char *) &person, sizeof(person));
//关闭文件
ifs.close();
}
}
这一章只是对文件操作的一节实践课,C++文件操作fstream仅是对libc中posix接口的二次封装,提供了更友好的操作方式。