程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放
通过文件可以将数据持久化
C++中对文件操作需要包含头文件
文件类型分为两种:
1、文本文件 - 文件以文本的ASCII码形式存储在计算机中
2、二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们
操作文件的三大类:
1、ofstream:写操作
2、ifstream: 读操作
3、fstream : 读写操作
写文件操作
写文件步骤如下:
1、包含头文件
#include <fstream>
2、创建流对象
ofstream ofs;
3、打开文件
ofs.open("文件路径",打开方式);
4、写数据
ofs << "写入的数据";
5、关闭文件ofs.close();
示例代码如下:
#include<iostream>
#include<fstream> //包含头文件
using namespace std;
int main() {
//文件写操作
ofstream ofs; //创建流对象
ofs.open("1.txt", ios::out); //以写的方式打开并且是覆盖方式,发现如果文件不存在的时候,以写的方式打开文件会自动创建,读的方式不会
ofs << "test" << endl;
ofs << "男" << endl;
ofs << "18" << endl;
ofs.close();
system("pause");
return 0;
}
注意: 文件打开方式可以配合使用,利用|操作符
例如:用二进制方式写文件ios::binary | ios:: out
读文件操作
步骤其实和写文件的操作差不多,但是我们创建的流对象不一样,并且打开方式也不一样
示例代码如下:
#include<iostream>
#include<fstream> //包含头文件
using namespace std;
int main() {
ifstream ifs;//创建流对象
ifs.open("1.txt", ios::in); //以读的方式打开
if (!ifs.is_open()) { //判断文件是否打开成功,如果打开失败就return
cout << "文件读取失败" << endl;
return 0;
}
//第一种方式进行读取
//char buf[1024] = { 0 }; //进行初始化操作
//while (ifs >> buf) { //进行读取操作
// cout << buf << endl;//输出读取到的内容
//}
//char buf[1024] = { 0 };
////这里自己觉得有意思的是getline传入的buf的指针
//while (ifs.getline(buf, size(buf))) { //istream& getline (char* s, streamsize n );
// cout << buf << endl;
//}
//这种也挺有意思的EOF 来判断 所以自己也写一下记录
char c;
while ((c = ifs.get()) != EOF) //get进行单个字符读取,感觉有点鸡肋
{
cout << c;
}
ifs.close(); //进行关闭文件的操作
system("pause");
return 0;
}
操作二进制文件: