关于输入输出
●C++语言可以继续使用C语言的标准库函数实现输入/输出功能。
●C语言的标准库函数不包含用户自定义数据类型,而且用户也不能通过重载库函数的方式实现用户自定义数据类型的输入/输出。
●在C语言中对于自定义数据类型输入/输出的实现既麻烦,也增加了程序设计的复杂性。
●C++为程序员提供了功能完整、具有类层次结构、可方便扩充的流类库实现输入/输出功能。
●流的概念
●输入/输出是一种基本的数据传递操作,它可以理解为字符序列在计算机内存与外设之间的流动
●C++将数据从一个对象到另一个对象的流动抽象为流,将实现设备之间交换信息的类称为流类
●按面向对象方法组织的多个流类及其类层次集合构成了I/O流类库,简称为流库
●与输入设备(如键盘)相联系的流称为输入流
●与输出设备(如屏幕)相联系的流称为输出流
●与输入输出设备相联系的流称为输入输出流
●从流中获取数据的操作称为提取操作
●向流中添加数据的操作称为插入操作
●每个流是一种与设备相联系的对象,在默认情况下:
指定的标准输入设备指键盘 指定的标准输出设备指显示终端(屏幕)
● I/O流库的层次关系
● C++语言的输入输出类层次可以分为输入输出流类层次和缓冲类层次。
● 输入输出流层次是从ios_base类开始的,该类作为所有类的基类,之后它派生出了basic_ios类。 ● 输入和输出并不是直接地进行读和写操作的,通常读和写操作是通过一个缓冲区来进行的。
● 在缓冲类层次中,所有缓冲类都从公共基类basic_streambuf类派生而来。
● ios类是basic_ios类的派生类。
● basic_ios类中派生出了basic_istream和basic_ostream类,其中basic_istream类用于描述输入流而basic_ostream用于描述输出流。这2个流类称为流库中的基本流类。
● basic_ios类包含一个指向streambuf的指针,提供格式标志(flags), 进行I/O格式化处理、文件设置模式及提供建立I/O流的方法。
输入输出基类主要完成其全部派生类中均需要的流的状态设置、状态报告、显示精度、域宽、填充字符设置和文件流的操作模式的定义等。