C++I/O流——(4)文件输入/输出(第一节)

归纳编程学习的感悟,
记录奋斗路上的点滴,
希望能帮到一样刻苦的你!
如有不足欢迎指正!
共同学习交流!
🌎欢迎各位→点赞 👍+ 收藏⭐ + 留言​📝
含泪播种的人一定能含笑收获!

一起加油!

目录

前言:

打开文件与关闭文件:

(1)通过创建fstream类对象打开文件格式如下:

[(2)通过创建 istream 或 ostream 类对象打开文件:](#(2)通过创建 istream 或 ostream 类对象打开文件:)

2.关闭磁盘文件:


前言:

**文件是存储在外部介质(如磁盘、光盘、U 盘)上的数据的集合。**操作系统是以文件为单位对数据进行管理的。对于用户来说,常用的文件主要有两大类:一类是程序文件另一类是数据文件 。在程序运行时,常常需要将一些数据输出到磁盘上存放,在以后需要时再从磁盘中输人到计算机内存,这种磁盘文件就是数据文件。程序中的输入和输出的对象就是数据文件。根据文件中数据的组织形式,可以将其分为 ASCIl文件和二进制文件。ASCII文件又称为文本文件或者字符文件,按字节存放 ASCIl码:二进制文件又称为内部格式文件,是把内存中的数据按在内存中的存储形式原样输出到磁盘。

前面介绍的 C++的流对象 cin和 cout 只能处理C++中以标准设备为对象的输入/输出而不能处理以磁盘文件为对象的输入/输出。要处理以磁盘文件为对象的输入/输出,必须另外定义以磁盘文件为对象的输入/输出流对象。在 C++的 I/O 类库中定义了几种文件类专门用于对磁盘文件的输入/输出操作。例如,以下三个为可用于文件操作的文件类:

  • (1)ifstream类,它是从 istream类派生的,用来支持从磁盘文件的输入;
  • (2)ofstream 类,它是从 ostream 类派生的,用来支持向磁盘文件的输出;
  • (3)fstream 类,它是从 iostream 类派生的,用来支持对磁盘文件的输入/输出

打开文件与关闭文件:

1.打开磁盘文件:

打开文件是指在文件读写之前做好准备工作,包括:为文件流对象和指定的磁盘文件建立关联。以便使文件流流向指定的磁盘文件,指定文件的工作方式,如该文件是作为输入还是输出是ASCIl文件还是二进制文件等。

以上工作可以通过两种方法实现:

(1)通过创建fstream类对象打开文件格式如下:

fstream <对象名>;
<对象名>.open("<文件名>",<访问方式>);

以上两行可以省略函数 open,合并写成:

fstream <对象名>("<文件名>",<访问方式>);

其中,<文件名>是被打开文件的全名;<访问方式>包括读、写、又读又写、二进制方式等。

调用文件流的成员函数 open 打开磁盘文件 f1.dat,并指定它作为输出文件。文件流对象 outfile将向磁盘文件 f1.dat 输出数据。ios::out 是 I/O 模式的一种,表示以输出方式打开一个文件。此时f1.dat 是一个输出文件,接收从内存输出的数据。磁盘文件名可以包括路径,如"d:\f1.dat",如果缺省路径,则默认为当前目录下的文件。

访问方式是在 ios 类中定义的,它们是枚举常量,有多种选择:

  • ios::in以输入方式(读)打开文件
  • ios::out以输出方式(写)打开文件,如果已有此名字的文件,则将原有内容清除
  • ios::app以输出方式打开文件,写入的数据添加在文件末尾
  • ios::ate打开一个已有的文件,文件指针指向文件末尾
  • ios::trunc打开一个文件,如果文件已存在则删除全部数据,如文件不存在则建立新文件
  • ios.:binary以二进制方式打开文件,如不指定此方式则默认为 ASCIl方式
  • ios::nocreate打开已有的文件,如不存在,则打开失败
  • ios::noreplace如果文件不存在则建立新文件,如文件存在则操作失败
  • ios::in | ios.:out以输入和输出方式打开文件,文件可读可写
  • ios::out | ios::binary以二进制方式打开输出文件
  • ios::in|ios::binary以二进制方式打开输入文件

新版本的 I/O 类库中不提供 ios::nocreate 和 ios::noreplace。

如果打开操作失败,open 函数的返回值为 0,可以根据返回值测试打开是否成功。

(2)通过创建 istream 或 ostream 类对象打开文件:

格式如下:ofstream <对象名>;
<对象名>.open("<文件名>");

或者

ifstream <对象名>;
<对象名>.open("<文件名>");

以上两行可以省略函数open,合并写成:

ofstream <对象名>("<文件名>");

或者
ifstream <对象名>("<文件名>");

用ofstream 类定义文件流对象,只能向它写入数据,不能从中读取数据,因此,参数ios::out可以省略;同理,用ifstream 类定义文件流对象时,参数 ios::in 可以省略。

2.关闭磁盘文件:

在对已打开的磁盘文件的读写操作完成后,应关闭文件。关闭文件用成员函数 close。其格式如下:

<对象名>.close();

关闭,实际上就是解除该磁盘文件与文件流的关联,使得原来设置的工作方式失效,不能再通过文件流对该文件进行输入/输出。

以上就是我对C++I/O流------(4)文件输入/输出(第一节)的理解,希望本篇文章对你有所帮助,也希望可以支持支持博主,后续博主也会定期更新学习记录,记录学习过程中的点点滴滴。如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对C++I/O流的理解,请持续关注我哦!!!

相关推荐
yukai080089 分钟前
Python一些可能用的到的函数系列130 UCS-Time Brick
开发语言·python
细心的莽夫10 分钟前
集合复习(java)
java·开发语言·笔记·学习·java-ee
Caramel_biscuit11 分钟前
C++专业面试真题(1)学习
c++·学习·面试
卫卫周大胖;13 分钟前
【C++】多态(详解)
开发语言·c++
yours_Gabriel16 分钟前
java基础:面向对象(二)
java·开发语言·笔记·学习
Enaium20 分钟前
Rust入门实战 编写Minecraft启动器#3解析资源配置
java·开发语言·rust
我写代码菜如坤21 分钟前
Unity中遇到“Input Button unload_long_back_btn is not setup”问题
开发语言
许思王33 分钟前
【Python】组合数据类型:序列,列表,元组,字典,集合
开发语言·人工智能·python
虫小宝2 小时前
如何在Java中实现PDF生成
java·开发语言·pdf
菜鸡且互啄692 小时前
在线教育平台,easyexcel使用案例
java·开发语言