文章目录

  • 一、文件输入输出流
  • 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、继承结构



文件 输入 / 输出流 相关的继承结构如下图所示 :

【C++】输入输出流 ⑨ ( 文件流 | 文件输入输出流 | 继承结构 | 文件输入输出流对象 | 文件打开与关闭 | 创建文件流对象同时指定参数打开文件 | 调用文件流 open 函数打开文件 )_文件流



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 . . .

【C++】输入输出流 ⑨ ( 文件流 | 文件输入输出流 | 继承结构 | 文件输入输出流对象 | 文件打开与关闭 | 创建文件流对象同时指定参数打开文件 | 调用文件流 open 函数打开文件 )_文件流_02



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 . . .

【C++】输入输出流 ⑨ ( 文件流 | 文件输入输出流 | 继承结构 | 文件输入输出流对象 | 文件打开与关闭 | 创建文件流对象同时指定参数打开文件 | 调用文件流 open 函数打开文件 )_IO流_03



4、关闭文件流



文件流 读写操作完毕后 , 要释放资源 , 调用 文件流对象的 close() 函数 , 即可关闭文件 , 之后就不能使用该 文件流对象 访问 文件了 ;

代码示例 : 在文件操作完毕后 , 调用 close() 函数 关闭文件 ;

ofstream fout;
	fout.open("1.txt", ios::out);

	// 向文件中写出字符
	fout << "Hello World!" << endl;

	// 关闭文件
	fout.close();






三、Visual Studio 2019 中创建文件



右键 " 解决方案资源管理器 " 中的 资源文件 , 选择 " 添加 / 新建项 " 选项 ,

【C++】输入输出流 ⑨ ( 文件流 | 文件输入输出流 | 继承结构 | 文件输入输出流对象 | 文件打开与关闭 | 创建文件流对象同时指定参数打开文件 | 调用文件流 open 函数打开文件 )_输入输出流_04

创建 实用工具 中的 文件文件 ;

【C++】输入输出流 ⑨ ( 文件流 | 文件输入输出流 | 继承结构 | 文件输入输出流对象 | 文件打开与关闭 | 创建文件流对象同时指定参数打开文件 | 调用文件流 open 函数打开文件 )_c++_05