文件操作
程序运行产生的数据属于临时数据,程序一旦运行结束都会被释放
通过文件可以将数据持久化
c++中对文件操作保护头文件<fstream>
文件类型:
文本文件:文件以文本ASCII码形式存在计算机中可以也txt打开
二进制:文件以文本的二进制形式存储计算机中
操作文件的三大类:
ofstream:写操作
ifstream:读文件
fstream:读写文件
操作流程
1.包含头文件
#include<fstream>
2.创建流对象
ofstream ofs;
3.打开文件
ofs.open("文件路径",打开方式);
4.写数据
ofs<<"写入的数据";
5.关闭文件
ofs.close();
文件打开方式:
ios::in :为读文件而打开文件
ios::out :为写文件而打开文件
ios::ate :初始位置:文件尾
ios::app :追加方式写文件
ios::trunc :如果文件存在先删除,在创建
ios::binary :二进制方式
主要文件打开方式可以配合使用 利用|操作符号
ios::binary | ios::out
实例:
void test01() {
ofstream ofs;
ofs.open("test.txt",ios::out);
ofs << "姓名:张三" << endl;
ofs << "性别:男" << endl;
ofs << "年龄:18" << endl;
ofs.close();
}
读文件:
1.包含头文件
#include<fstream>
2.创建流对象
ifstream ifs;
3.打开文件,并判断文件是否打开
ifs.open("文件路径",打开方式);
ifs.is_open()来判断是否打开成功
4.读数据:四种方式读取
ifs<<"写入的数据";
5.关闭文件
ifs.close();
实例:
void test02() {
ifstream ifs;
ifs.open("test.txt",ios::in);
if (!ifs.is_open()) {
cout << "文件打开失败" << endl;
return;
}
char c;
while ((c = ifs.get()) != EOF) {
cout << c;
}
ifs.close();
}
二进制文件
以二进制的方式对文件进行读写操作
打开方式指定为:ios::binary
写文件:
函数原型:ostream write(const char * buffer, int len);
参数结束:字符指针buffer指向内存中一段存储空间,len是读写的字节数
class Person {
public:
char m_Name[64];
int m_Age;
};
void test03() {
ofstream ofs;
ofs.open("person.txt", ios::out | ios::binary);
Person p = {"张三",18};
ofs.write((const char *)&p, sizeof(Person));
ofs.close();
}
二进制读文件
istream& read(char *buffer,int len);
void test04() {
ifstream ifs;
ifs.open("person.txt",ios::in | ios::binary);
if (!ifs.is_open()) {
cout << "打开失败!" <<endl;
}
Person p;
ifs.read((char*)&p, sizeof(Person));
cout << "姓名:" << p.m_Name << "年龄:" << p.m_Age << endl;
ifs.close();
}