今日心得:今天一大早心血来潮想着来刷一道算法题来,想着正好复习一下刚学的栈,觉得自己应该能在一个小时差不多解决吧,没想到两个小时过去了,还是调试不出来
在力扣上看别人的代码,发现一堆啥都不认识,什么容器Victor,一个栈的题目要用到哈希表,我表示我还没有学到啊,深深的感觉到自己的弱小,哎,还有很长的路要走啊。
今天是非常不顺利的一天,真正让我体验到了什么叫代码5分钟,debug两小时。
1,文件操作
1)程序运行的时候一般是临时数据,程序一结束,数据消失
2)所以通过文件操作可以使数据持久化
3)文件操作必须包含头文件fstream
读文件可以可以用ofstream或者fstream类
打开文件是需要指定路径,以及打开方式
利用<<可以向文件输入数据
操作结束需要关闭文件
2,文件打开方式
1)ios:in 读文件
2)ios:out 写文件
3)ios:ate 初始位置,文件尾
4)ios:app 追加方式写文件
5)ios:trunc 如果文件存在,先删除文件再创建文件
6)iso:binary 二进制方式
注意:ifs.isopen()用来判断文件是否打开成功
3,写文件基本步骤
1)包含头文件fstream
2)创建流对象ofstream ofs;
3)打开文件ofs.open("文件路径",打开方式)//如果要追加打开方式用|隔开
4)写入文件ofs>>“数据”
5)关闭文件
例:#include <fstream>
int main()
{
ofstream ofs;
ofs.open("text.txt", ios::out);
ofs << "张三" << endl;
ofs << "李四" << endl;
ofs.close();
}
4,三种读文件的基本操作
1)包含头文件fstream
2)创建流对象ifstream ifs;
3)打开文件ifs.open("文件路径",打开方式);
#include<fstream>
int main()
{
ifstream ifs;
ifs.open("text.txt", ios::in);
/*char c;
while ((c = ifs.get()) != EOF)
cout << c;*/
/*char buf[1000];
while (ifs.getline(buf, sizeof(buf)))//getline()读取一行数据
cout << buf;*/
/*char buf[1000];
while (ifs >> buf)
cout << buf;*/
ifs.close();
}
5,二进制写文件
与上类似,所以直接上代码
例:#include<fstream>
class person {
public:
char name[10];
int age;
};
int main()
{
ofstream ofs;
ofs.open("text.txt", ios::out | ios::binary);
person p = { "张三",18 };
ofs.write((const char*)&p, sizeof(p));//write用来写文件
ofs.read((const char*)&p, sizeof(p));//read用来读文件
ofs.close();
}