目录
最近整理了一下c++的知识点,在此记录一下。
为什么要学习文件操作:
程序中运行产生的数据都属于临时数据,程序一旦运行结束,数据都被释放,通过文件可以将数据持久化。
- c++文件操作需要包含头文件<fstream>。
- 文件类型分为两种:
文本文件:文本文件存储的是ASCII码,文件的内容可以直接进行输入输出;
二进制文件:二进制文件直接将字符存储,不能将二进制文件的内容直接输出到屏幕上。
1.文件操作三大类:(文件流)
ofstream 写操作, o代表output , f代表文件
ifstream 读操作, i代表input , f代表文件
fstream 读写操作
2.文件打开方式:
ios :: in |
只读打开 |
ios :: out |
只写打开 |
ios :: ate |
在文件末尾打开 (ate:at the end) |
ios :: app |
以追加的方式写文件 |
ios :: trunc |
如果文件先删除再创建后打开 |
ios :: binary |
二进制方式操作文件 |
注意:文件打开方式可以配合使用,利用 “|” (或)操作符。
例如:用二进制方式写文件:ios::binary | ios::out
3.文本文件--写文件的步骤:
- 包含头文件:#include<fstream>;
- 创建流对象:ofstream ofs;
- 打开文件:ofs.open("文件路径",打开方式);
- 写数据:ofs<<"写入的数据";
- 关闭文件:ofs.close();
示例1:用ios::out写东西到文件中
#include <iostream>
#include <fstream>
using namespace std;
//文本文件——写文件
void test1()
{
//1.包含头文件
//2.创建流对象
ofstream ofs;
//3.指定打开方式
ofs.open("daidia.txt",ios::out);//此处不指定文件生成路径,默认在当前工程文件夹下
//4.写内容
ofs << "日期:2023.04-25" << endl;
ofs << "天气:阴" << endl;
ofs << "工作:学习c++" << endl;
//5.关闭文件
ofs.close();
}
int main()
{
test1();
}
效果:找到工程文件夹路径就可以看到daidia.txt文件。打开:
4.文本文件--读文件的步骤:
- 包含头文件:#include<fstream>;
- 创建流对象:ifstream ifs;
- 打开文件:ifs.open("文件路径",打开方式);
- 读数据:四种方式读数据
- 关闭文件:ifs.close();
示例2:用ios::in把文件内容读出来
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//文本文件——读文件
void test2()
{
//1.包含头文件
//2.创建流对象
ifstream ifs;
//3.打开文件,判断文件是否打开成功
ifs.open("daidia.txt", ios::in);
if (!ifs.is_open())
{
cout << "文件打开失败" << endl;
return;
}
//4.读文件内容
//第一种
char buff[1024] = { 0 };
while (ifs>>buff)
{
cout << buff << endl;
}
//第二种
/*char buff[1024] = {0};
while (ifs.getline(buff, sizeof(buff)))
{
cout << buff << endl;
}*/
//第三种
/*string buff;
while (getline(ifs, buff)) //如果此处使用getline报错,头文件加入#include <string>
{
cout << buff << endl;
}*/
//第四种,效率低
/*char c;
while ((c = ifs.get()) != EOF)//EOF:end of file,循环判断是否读到文件尾,没读到一直读
{
cout << c ;
}*/
//5.关闭文件
ifs.close();
}
int main()
{
//test1();
test2();
}