携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情
1.读文件的操作
读文件与写文件步骤相似,但是读取方式相对于比较多
-
读文件步骤如下:
-
-
包含头文件
#include <fstream>
-
-
- 创建流对象
ifstream ifs;
-
- 打开文件并判断文件是否打开成功
ifs.open("文件路径",打开方式); 返回类型是布尔的数据类型,返回真或者假。如果打开成功返回真;如果打开失败那就返回假。
-
- 读数据
四种方式读取
-
- 关闭文件
ifs.close();
2.判断打开失败或者成功
#include<iostream>
#include <fstream>
using namespace std;
//#include <string>
void h()
{
ifstream ifs;
ifs.open("E:/h.txt", ios::in);
if (ifs.is_open())
{
cout << "文件打开成功" << endl;
return;
}
else if (!ifs.is_open())
{
cout << "文件打开失败" << endl;
return;
}
ifs.close();
}
int main() {
h();
system("pause");
return 0;
}
输出:
文件打开成功 请按任意键继续. . .
ifs.open("E:/L.txt", ios::in);
输出:
文件打开失败 请按任意键继续. . .
3.把文件的数据读到我们程序中去
- 第一种方法:
用循环的方式把三行数据全部拿到手: 利用ifs右移运算符把数据放到buff中,当数据全部读到手之后,循环也就结束了。
#include<iostream>
#include <fstream>
using namespace std;
#include <string>
void h()
{
ifstream ifs;
ifs.open("E:/h.txt", ios::in);
if (ifs.is_open())
{
cout << "文件打开成功" << endl;
}
else if (!ifs.is_open())
{
cout << "文件打开失败" << endl;
return;
}
char a[1024] = { 0 };
while (ifs >> a)
{
cout << a << endl;
}
ifs.close();
}
int main() {
h();
system("pause");
return 0;
}
输出:
文件打开成功 姓名:侯舒婷 性别:女 年龄:18 请按任意键继续. . .
4.操作文件的三大类
- ofstream:写操作
- ifstream: 读操作
- fstream : 读写操作
5.文件打开方式
| 打开方式 | 解释 |
|---|---|
| ios::in | 为读文件而打开文件 |
| ios::out | 为写文件而打开文件 |
| ios::ate | 初始位置:文件尾 |
| 可能你打开的文件已经有内容了,所以打开的时候直接追加到文件尾。 | |
| ios::app | 追加方式写文件 |
| 也是打开文件的时候直接打开文件尾,追加着写一些东西。 | |
| ios::trunc | 如果文件存在先删除,再创建 |
| ios::binary | 二进制方式 |
注意: 文件打开方式可以配合使用,利用|操作符