前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】输入输出流 ⑨ ( 文件流 | 文件输入输出流 | 继承结构 | 文件输入输出流对象 | 文件打开与关闭 | 创建文件流对象同时指定参数打开文件 | 调用文件流 open 函数打开文件 )

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

作者头像
韩曙亮
发布2023-12-13 15:08:17
3550
发布2023-12-13 15:08:17
举报
文章被收录于专栏:韩曙亮的移动开发专栏
文章目录

  • 一、文件输入输出流
    • 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、创建文件流对象同时指定参数打开文件

创建文件流对象同时指定参数打开文件 : 在 创建文件流对象 时 在 构造函数 参数中 , 设置 文件路径 和 访问方式 ;

代码示例 :

  • 创建文件输出流对象并打开文件 :
代码语言:javascript
复制
	// 创建 文件输出流 对象
	// 1. 与 1.txt 文件关联
	// 2. 设置 访问方式 为 输出数据到文件中
	ofstream fout("1.txt", ios::out);
  • 创建文件输入流对象并打开文件 :
代码语言:javascript
复制
	// 创建 文件输入流 对象
	// 1. 与 1.txt 文件关联
	// 2. 设置 访问方式 为 从文件中读取数据 
	ifstream fin("1.txt", ios::in);

完整代码示例 :

代码语言:javascript
复制
#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;
};

执行结果 :

代码语言:javascript
复制
从文件中读取的数据 : Hello World!

Press any key to continue . . .

3、调用文件流对象 open 函数打开文件

创建 文件流 对象 并打开 :

  • 首先 , 创建 文件输入流 对象 ;
  • 然后 , 调用 文件流对象的 open 函数打开文件 ;

代码示例 :

  • 创建文件输入流 :
代码语言:javascript
复制
	// 创建 文件输入流 对象 并打开
	// 1. 首先 , 创建 文件输入流 对象
	// 2. 然后 , 文件流对象的 open 函数打开文件
	ifstream fin;
	fin.open("1.txt", ios::in);
  • 创建文件输出流 :
代码语言:javascript
复制
	// 创建 文件输出流 对象 并打开
	// 1. 首先 , 创建 文件输出流 对象
	// 2. 然后 , 文件流对象的 open 函数打开文件
	ofstream fout;
	fout.open("1.txt", ios::out);

完整代码示例 :

代码语言:javascript
复制
#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;
};

执行结果 :

代码语言:javascript
复制
从文件中读取的数据 : Hello World!

Press any key to continue . . .

4、关闭文件流

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

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

代码语言:javascript
复制
	ofstream fout;
	fout.open("1.txt", ios::out);

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

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

三、Visual Studio 2019 中创建文件


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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、文件输入输出流
    • 1、文件输入输出流简介
      • 2、继承结构
        • 3、文件输入输出流对象
        • 二、文件打开与关闭
          • 1、文件打开
            • 2、创建文件流对象同时指定参数打开文件
              • 3、调用文件流对象 open 函数打开文件
                • 4、关闭文件流
                • 三、Visual Studio 2019 中创建文件
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档