(43.1)文件之文件的概念

1.文件的概念

  • C++的输入输出是以字节流的形式实现的。

  • 流是指由若干字节组成的字节序列的数据从一个对象传递到另一个对象的操作。

  • 从流中读取数据称为提取操作, 向流内添加数据称为插入操作。

  • 流在使用前要建立, 使用后要删除。

  • 流具有方向性: 与输入设备相联系的流称为输入流, 与输出设备相联系的流称为输出流, 与输入输出设备相联系的流称为输入输出流。

  • C++输入输出类库中包含许多流类(stream class) , 如下图所示
    (43.1)文件之文件的概念

  • 提取和插入运算符
    (1)在istream类中已经将运算符(>>) 重载为提取运算符, 支持基本数据类型及其指针类型。
    (2)在ostream类中已经将运算符(<<) 重载为插入运算符, 其适用类型除了前述类型外, 还增加了void*类型。

  • 预定义流对象
    (1)标准库将常用iostream类的流对象, 定义在头文件中,
    它们是:
    ①cin: 与标准输入设备相关联的标准输入流(istream对象) ;
    ②cout: 与标准输出设备相关联的标准输出流(ostream对象) ;

2.文件

  • 程序常常需要将一些数据信息(如运行结果) 永久性地保存下来,或者从永久性信息中读取有用的数据(如历史记录) , 这些都需要进行文件操作。
    C++文件操作是通过文件流实现的。
  • 文件是指存放在磁盘上数据的集合。
    操作系统以文件为单位对这些数据进行管理。
    也就是说, 如果想得到存在磁盘上的数据, 必须先按文件名找到指定的文件, 然后再从该文件中读取数据。
    要向磁盘上存放数据也必须先以文件名为标识创建建一个文件, 才能向它输出数据。
  • 文件按数据的组织形式可以分为两类:
    (1) ASCII文本文件,eg:记事本文件
    文本(text) 文件对于ASCII字符集而言, 文件中每个字节存放的是一个ASCII码, 表示一个字符; 对于像汉字、 日韩文字等字符集而言, 使用双字节存放字符。
    eg:12345这个数字占多少个字节?5个字节
    (2) 二进制文件
    二进制文件是将数据以内存中的存储形式直接存放到磁盘上。
    用二进制形式输出数据, 可以节省存储空间和避免编码转换。 由于一个字节并不对应一个字符, 所以不能直接打印输出或编辑二进制文件。
    eg:12345这个数字占多少个字节?可能占4个字节