文章目录
- 一、文件输入输出流
- 1、文件输入输出流简介
- 2、继承结构
- 3、文件输入输出流对象
- 二、文件打开与关闭
- 1、文件打开
- 2、创建文件流对象同时指定参数打开文件
- 3、调用文件流对象 open 函数打开文件
- 4、关闭文件流
- 三、Visual Studio 2019 中创建文件
一、文件输入输出流
1、文件输入输出流简介
文件 IO 流 , 主要定义在 fstream.h 头文件中 , 该头文件中定义了以下三个类 :
- 文件输入流 ifstream : 继承了 istream , 用于读取文件数据到 程序 中 ;
- 文件输出流 ofstream : 继承了 ostream , 用于将 程序中的数据 输出到 文件 中 ;
- 文件流 fstream : 继承了 iostream , 而 iostream 多继承 istream 和 ostream , 既可以读取文件数据 , 又可以向文件中输出数据 ;
2、继承结构
文件 输入 / 输出流 相关的继承结构如下图所示 :
3、文件输入输出流对象
标准的 输入输出流 操作的是 显示器 和 键盘 这两个标准默认设备 , C++ 中预先定义了 cin 输入流对象 接收 键盘输入数据 , cout 输出流对象 向显示器输出数据 ;
文件输入输出流 没有默认文件设置 , 需要先创建 输出输出流对象 , 然后才能操作文件 ;
二、文件打开与关闭
1、文件打开
文件打开 需要 执行两个准备工作 :
- 关联文件 : 关联 文件流对象 和 磁盘文件 , 将 文件路径 设置给 文件流对象 ;
- 打开方式 : 设置 文件流对象 打开方式 , 输入还是输出 , 以 二进制形式 ( 字节流 ) 还是 字符形式 ( 字符流 ) 访问 ;
文件打开有两种方式 :
- 第一种打开文件方式 : 创建文件流对象时指定参数 , 如 : 打开的文件路径 , 访问方式 ;
- 第二种打开文件方式 : 先创建文件流对象, 再调用 对象的 open 函数打开文件
2、创建文件流对象同时指定参数打开文件
创建文件流对象同时指定参数打开文件 : 在 创建文件流对象 时 在 构造函数 参数中 , 设置 文件路径 和 访问方式 ;
代码示例 :
- 创建文件输出流对象并打开文件 :
// 创建 文件输出流 对象
// 1. 与 1.txt 文件关联
// 2. 设置 访问方式 为 输出数据到文件中
ofstream fout("1.txt", ios::out);
- 创建文件输入流对象并打开文件 :
// 创建 文件输入流 对象
// 1. 与 1.txt 文件关联
// 2. 设置 访问方式 为 从文件中读取数据
ifstream fin("1.txt", ios::in);
完整代码示例 :
#include "iostream"
using namespace std;
#include "fstream"
int main() {
// 第一种打开文件方式 : 在创建文件流对象时指定参数
// 第二种打开文件方式 : 先创建文件流对象, 再调用 对象的 open 函数打开文件
// I. 第一种方式 文件输出流
// 创建 文件输出流 对象
// 1. 与 1.txt 文件关联
// 2. 设置 访问方式 为 输出数据到文件中
ofstream fout("1.txt", ios::out);
// 向文件中写出字符
fout << "Hello World!" << endl;
// 关闭文件
fout.close();
// II. 第一种方式 文件输入流
// 创建 文件输入流 对象
// 1. 与 1.txt 文件关联
// 2. 设置 访问方式 为 从文件中读取数据
ifstream fin("1.txt", ios::in);
cout << "从文件中读取的数据 : ";
// 存储读取的单个字节
char c;
// 从文件中读取单个字符
while (fin.get(c))
{
// 输出单个字节数据
cout << c;
}
// 输出回车换行
cout << endl;
// 关闭文件
fin.close();
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
从文件中读取的数据 : Hello World!
Press any key to continue . . .
3、调用文件流对象 open 函数打开文件
创建 文件流 对象 并打开 :
- 首先 , 创建 文件输入流 对象 ;
- 然后 , 调用 文件流对象的 open 函数打开文件 ;
代码示例 :
- 创建文件输入流 :
// 创建 文件输入流 对象 并打开
// 1. 首先 , 创建 文件输入流 对象
// 2. 然后 , 文件流对象的 open 函数打开文件
ifstream fin;
fin.open("1.txt", ios::in);
- 创建文件输出流 :
// 创建 文件输出流 对象 并打开
// 1. 首先 , 创建 文件输出流 对象
// 2. 然后 , 文件流对象的 open 函数打开文件
ofstream fout;
fout.open("1.txt", ios::out);
完整代码示例 :
#include "iostream"
using namespace std;
#include "fstream"
int main() {
// 第一种打开文件方式 : 在创建文件流对象时指定参数
// 第二种打开文件方式 : 先创建文件流对象, 再调用 对象的 open 函数打开文件
// I. 第二种方式 文件输出流
// 创建 文件输出流 对象 并打开
// 1. 首先 , 创建 文件输出流 对象
// 2. 然后 , 文件流对象的 open 函数打开文件
ofstream fout;
fout.open("1.txt", ios::out);
// 向文件中写出字符
fout << "Hello World!" << endl;
// 关闭文件
fout.close();
// II. 第二种方式 文件输入流
// 创建 文件输入流 对象 并打开
// 1. 首先 , 创建 文件输入流 对象
// 2. 然后 , 文件流对象的 open 函数打开文件
ifstream fin;
fin.open("1.txt", ios::in);
cout << "从文件中读取的数据 : ";
// 存储读取的单个字节
char c;
// 从文件中读取单个字符
while (fin.get(c))
{
// 输出单个字节数据
cout << c;
}
// 输出回车换行
cout << endl;
// 关闭文件
fin.close();
// 控制台暂停 , 按任意键继续向后执行
system("pause");
return 0;
};
执行结果 :
从文件中读取的数据 : Hello World!
Press any key to continue . . .
4、关闭文件流
文件流 读写操作完毕后 , 要释放资源 , 调用 文件流对象的 close() 函数 , 即可关闭文件 , 之后就不能使用该 文件流对象 访问 文件了 ;
代码示例 : 在文件操作完毕后 , 调用 close() 函数 关闭文件 ;
ofstream fout;
fout.open("1.txt", ios::out);
// 向文件中写出字符
fout << "Hello World!" << endl;
// 关闭文件
fout.close();
三、Visual Studio 2019 中创建文件
右键 " 解决方案资源管理器 " 中的 资源文件 , 选择 " 添加 / 新建项 " 选项 ,
创建 实用工具 中的 文件文件 ;