16文件操作

  • 文件操作包括
    • 打开文件、
    • 读文件和雪文件,
    • 掌握读文件和雪文件的同时,
    • 文件指针的移动,这能够控制读文件和写文件的位置。

16.1 文件流

  • C++为不同类型数据的标准输入和输出定义了专门的类库,
  • ios为根基类,它直接派生4个类,
    • 输入流类
    • 输出流类
    • 文件流基类
    • 字符串流基类
  • 输入文件流类同时继承输入流类和文件流基类,
  • 输出文件流类同时继承输出流类和文件流基类,
  • 输入字符串流类同时继承输入流类和字符串流基类,
  • 输出字符串流类同时继承输出流类和字符串流基类,
  • 输入/輸出流类iostream同时继承输入流类和输出流类
  • 输入/输出文件流类fstream同时继承输入/输出流类和文件流基类
  • 输入/输出字符串流类继承输入/输出流类和字符串流基类

在这里插入图片描述

16.1.2类库的使用

  • C++的I/O标准类,都定义在

    • iostream.h
    • fstream.h
    • strstream.h
  • 标准I/O时用iostream.h

    • 含ios、 iostream、 istream和 ostream等类
  • 文件IO操作时用fstream.h

    • 含fstream、 ifstream、 ofstream和 fstreambase等类。
  • 串I/O时用strstream.h,

    • 含strstream、 istrstream、 ostrstream、
    • strstreambase和 iostream等类。

  • 要进行什么样的操作,只要引入头文件就可以用类进行操作

16.2文件打开

16.2.1打开方式

  • 只有用文件流与磁盘上的文件连接后

    • オ能对磁盘上的文件进行操作,这个连接过程称为打开文件。
  • 打开文件的方式两种。

(1)创建文件流时用构造函数打开文件,

  • 即在创建流时加入参数

在这里插入图片描述

  • 文件流类可以是 fstream、 ifstream和 ofstream中。

  • 打开方式在ios类中定义,

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(2)用open打开磁盘文件

在这里插入图片描述

  • 文件流对象名是一个已经定义了的文件流对象。

在这里插入图片描述

  • 用两种方式中的任意一种来打开文件,如果成功,文件流对象为非0,
  • 失败,则文件流对象为0值。
  • 检测一个文件是否打开成功可以用以下语句:

在这里插入图片描述

  • prot决定文件访问方式,取值
  • 0:普通文件。
  • 1:只读文件。
  • 2:隐含文件
  • 4:系统文件。

16.2.2默认打开模式

  • 如果没指定打开方式参数,编译器会用默认值。

在这里插入图片描述

  • 文件打开模式有不同组合,下面就对各个模式的效果进行介绍。
  • 文件打开模式如表16.1

在这里插入图片描述

16.2.3打开文件同时创建文件

在这里插入图片描述

  • 创两个文件,
  • ofstream默认打开方式是std:ios:out|std:iog:tunk,
  • 所以当文件夹内没有test和test2时,会创建这两个文件,并向文件写入字符串。
    • 向test写入字符串“ namel sexi agel”,
    • 向test2写入字符串“name2sex2age2”。
  • 如果文件夹内有test文件和test2时,
    • 程序会覆盖原有文件而重新写入。

16.3文件的读写

16.3.1文件流

(1)文件流分类

  • 流分3类,

    • 输入流、输出流和输入/输出流,
    • ifstream, ofstream和fstream类
  • 说明了流对象后,可用open打开文件。

  • 文件的打开即是在流与文件之间建立一个连接。

(2)文件流成员函数

  • ofstream和 ifstream有很多磁盘文件管理的函数。

在这里插入图片描述

(3) fstream成员函数表

  • fstream成员函数如表16.2

在这里插入图片描述

在这里插入图片描述

  • 用 ifstream和 ofstream对象实现读写文件

在这里插入图片描述

  • 首先用ofstream类创建并打开test.txt,然后用户输入5次数据,
  • 这5次输入的数据全部写入 test.txt,
  • 关闭 ofstream类打开的文件,
  • 用 ifstream类打开文件,将文件的内容输出

在这里插入图片描述


16.3.2写文本文件

  • 16.3.1用ifstream和ofstream类创建并写入文本文件,
  • 本节用fstream写入文本文件

在这里插入图片描述

  • fstream类的构造函数打开test.txt,
  • 然后向文本文件写入了字符串"name sex age"

16.3.3读取文本文件

在这里插入图片描述

  • 打开test. txt,文件的内容如图16.4
  • 程序读取文本文件tes.t中,并将其输出,运行结果如图16.5

在这里插入图片描述

16.3.4二进制文件的读写

  • 文本文件中的数据都是ASC码,
  • 读取图片的内容,就不能使用读取文本文件的方法了。

  • 以二进制方式读写文件,需ios: binary模式

在这里插入图片描述

在这里插入图片描述

  • 输入两次数据,然后通过fstream以二进制方式写入到文件,
  • 再通过 istream以二进制方式读取出来并输出。
  • 对二进制数据读取需用read,写入二进制数据需用 write

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fgh431

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值