文本文件
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放
通过文件可以将数据持久化
C++的文件操作需要包含头文件
文件分类
文本文件:文件以文本的ASCII码形式存储在计算机中
二进制文件:文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们
打开文件的方式
ios::in 为读文件而打开文件
ios::out 为写文件而打开文件
ios::ate 初始位置:文件尾
ios::app 追加方式写文件
ios::trunc 如果文件存在先删除再创建
ios::binary 二进制形式
文件三种操作
ofstream:写操作
ifstream读操作
fstream:读写操作
写文件
int main() {
// 创建流对象
ofstream ofs;
// 打开文件,以写文件格式写文件
ofs.open("mle.txt", ios::out);
// 写文件内容
ofs << "姓名:张三" << endl;
ofs.close();
}
读文件
int main() {
// 创建流对象
ifstream ifs;
// 打开文件,以读文件打开文件
ifs.open("mle.txt", ios::in );
// 写文件内容
char buf[1024] = { 0 };
// 方法一
while (ifs>>buf) {
cout << buf << endl;
}
// 方法2
while (ifs.getline(buf, sizeof(buf))) {
cout << buf << endl;
}
// 方法3
string buf;
while(getline(ifs, buf)) {
cout << buf << endl;
}
char c;
while ((c = ifs.get()) != EOF) {
cout << c;
}
ifs.close();
}
二进制文件
写文件
class Person {
public:
string name;
};
int main() {
ofstream ofs;
ofs.open("person.txt", ios::out | ios::binary);
Person p = { "zhangsan" };
// 把p写入文件,写入大小为sizeof(Person)
ofs.write((const char *)&p,sizeof(Person));
ofs.close();
}
读文件
class Person {
public:
string name;
};
int main() {
ifstream ifs;
ifs.open("person.txt", ios::in | ios::binary);
Person p ;
ifs.read((char*)&p, sizeof(Person));
ifs.close();
}