参考:http://www.weixueyuan.net/view/6407.html

总结:  

  在C++中,输入输出数据的传送过程我们称之为流,一个流就是一个字节序列,对流可以进行读或写操作。

  输入输出类层次可以分为输入输出流类层次和缓冲类层次。

  在C++中,输入输出流层次是从ios_basic类开始的,该类作为所有类的基类,之后它派生出了basic_ios类。  

  在C++中输入和输出并不是直接地进行读和写操作的,通常读和写操作是通过一个缓冲区来进行的。

  在缓冲类层次中,所有缓冲类都从公共基类basic_streambuf类派生而来。

  在程序中声明头文件,就相当于在程序中声明了相关的类,可以说头文件是程序与类库的接口。

在C++中,输入输出数据的传送过程我们称之为流,一个流就是一个字节序列,对流可以进行读或写操作。

输入输出类层次可以分为输入输出流类层次和缓冲类层次,我们先来看一下C++的输入输出流类层次,见下图。

在C++中,输入输出流层次是从ios_basic类开始的,该类作为所有类的基类,之后它派生出了basic_ios类,这两个类是整个输入输出流类层次的基类,但是它们在功能上有些区别:ios_basic和basic_ios都在一定程度上描述了流的基本性质,但是ios_basic并没有考虑流的字符集,而basic_ios在描述流的基本性质时考虑了此点。

之后则从basic_ios类中派生出了basic_istream和basic_ostream类,其中basic_istream类用于描述输入流而basic_ostream用于描述输出流。 basic_istream和basic_ostream类分别继承了ios_base和basic_ios类中的成员函数,并且增添了自己的成员函数,例如分别对左移操作符和右移操作符的重载函数。

basic_iostream类则是同时继承了basic_istream类和basic_ostream类,该类并没有新增成员变量,在成员函数方面,它也只是增添了构造函数和析构函数。而basic_ifstream和basic_ofstream类,这两个类分别继承自basic_istream类和basic_ostream类,basic_ifstream和basic_ofstream类主要是对文件进行读写操作。

在C++中输入和输出并不是直接地进行读和写操作的,通常读和写操作是通过一个缓冲区来进行的。当计算机收到写字符的请求时,计算机并不会将等待写入的字符直接写入到输出流中,而是将其先写到缓冲区中,然后定期地将缓冲区中的字符写入到输出流中,此过程我们称之为清扫缓冲区,通常缓冲区满或者换行符会带动一次将缓冲区中的字符写到输出流中。读入操作也同样会经过缓冲区,也有类似的过程。

在缓冲类层次中,所有缓冲类都从公共基类basic_streambuf类派生而来,见下图。字符流缓冲类basic_stringbuf和文件缓冲类basic_filebuf,这两个类为输入输出类提供输入输出服务,它们从basic_streambuf类中继承了对缓冲区读写操作的函数。

在程序中声明头文件,就相当于在程序中声明了相关的类,可以说头文件是程序与类库的接口,在大致了解了输入输出类层次之后,我们来看一下头文件的用途。

头文件 用途
iosfwd 包含一些基本的类声明
iostream 声明了cin、cout等对象
ios 声明了ios_base类和basic_ios类
streambuf 声明了basic_streambuf类
istream 声明了basic_istream类和basic_iostream类
ostream 声明了basic_ostream类
iomanip 声明了用于格式化处理的操纵符
sstream 声明了basic_stringbuf类和stringstream类
fstream 声明了basic_filebuf类和fstream类

在这些头文件中我们常用头文件有:iostream、fstream、strstream、iomanip。Iostream头文件中包含了对输入输出流进行操作所需要的基本信息,fstream则用于对文件的读写操作,strstream头文件可以用于输入输出字符串,而iomanip则主要是用于格式化输入输出。

8.1 C++输入输出类的层次的更多相关文章

  1. Swing学习笔记1-----Swing组件类的层次

    1.  从结构上划分 Swing 组件类分为两种,一种是JComponent类,一种是Windows类.其中windows类包含的是一些可以独立显示的组件,而JComponent类包含的是不可以独立显 ...

  2. 【Java】异常类处理层次

    异常处理简介 异常在java的开发中可能没有那么被重视.一般遇到异常,直接上抛,或者随便catch一下处理之后对于程序整体运行也没有什么大的影响.不过在企业级设计开发中,异常的设计与处理的好坏,往往就 ...

  3. UIKit框架类层次图

    学习UIKit应该首选了解UIKit类的层次图,从根类一层一层的拨.

  4. Java类载入器(一)——类载入器层次与模型

    类载入器   虚拟机设计团队把类载入阶段中的"通过一个类的全限定名来获取描写叙述此类的二进制字节流"这个动作放到Java虚拟机外部去实现.以便让应用程序自己决定怎样去获取所须要的类 ...

  5. Java_IO流输入输出

    第三章 输入输出 一.I/O Input/Output 二.File 用途:对文件和目录进行常规操作(除文件读写操作外). 方法:exists():判断文件或目录是否存在 isFile():判断是否是 ...

  6. Python笔记(4)类__属性与描述符

    部分参考自:http://www.geekfan.net/7862/ 新式类与经典类 2和3不一样,3都是新式类. 新式类和经典类的区别: class A: #classic class " ...

  7. 【PHP面向对象(OOP)编程入门教程】11.类的继承

    继承作为面向对象的三个重要特性的一个方面,在面向对象的领域有着及其重要的作用,好像没听说哪个面向对象的语言不支持继承. 继承是PHP5面象对象程序设计的重要特性之一,它是指建立一个新的派生类,从一个或 ...

  8. 类图和对象图教程-类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)

    类图的概念 (转) 一.概述 类图(Class Diagram)是描述类.接口.协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是定义其他图的基础,在类图基础上,可以使用状态图.协作图. ...

  9. C++标准库异常类

    C++标准库异常类 2012-12-24 16:27 5269人阅读 评论(1) 收藏 举报  分类: c/c++(36)  C++标准库异常类继承层次中的根类为exception,其定义在excep ...

随机推荐

  1. python+opencv 运行环境搭建

    1:安装pycharm,验证码你懂的 2:安装python3.5以上,或3.6,python2和3 的版本差异还蛮大 3:安装opencv,如下图 以上是方法一,还有之中方法是下载whl文件再手动安装 ...

  2. Getting started with Processing 示例11-9 追随鼠标移动

    程序片段 int num = 60; int[] x = new int[num]; int[] y = new int[num]; void setup(){ size(240,120); noSt ...

  3. 20165327 2017-2018-2 《Java程序设计》第6周学习总结

    20165327 2017-2018-2 <Java程序设计>第6周学习总结 教材内容总结 第八章 String类常用方法 public int length() public boole ...

  4. 错误不能中断(不许因错误或异常而产生阻断性Bug)

    错误不能终断(不许因错误或异常而产生阻断性Bug),当遇到错误或异常时,要处理掉,并且给予合理提示(比如:XXX失败,请重试)

  5. 图解GIT,ZT

    图解GIT,ZT http://nettedfish.sinaapp.com/blog/2013/08/05/deep-into-git-with-diagrams/

  6. PHP 练习项目------歆语微博项目

    一个简单微博项目,php+mysql+apache开发,个人购买资料的项目练习,适合新手练习. 测试账号:zhangqie  密码:123456 功能列表: 数据库增删改查, 图片上传 表情,@好友 ...

  7. Confluence 6 设置你的个人空间主页

    不论你是否正在使用个人空间为沙盒来测试一些内容,组合灯显示是如何工作的,一个能够导航到其他空间和内容的页面,或者一些完全不同的东西.下面一些红能够帮助你在你的个人空间中更加有效的使用和发布信息. 使用 ...

  8. 微擎查询SQL语句常用

    pdo_fetch:根据SQL语句,查询一条记录 array | boolean pdo_fetch($sql, $params = array()); // :uid 是参数的一个点位符,没有使用引 ...

  9. github第一步之初始化操作

    目录 0.首先注册一个账号 1.创建知识库Repository 2.创建一个分支branch--feature 3.制作并提交commit 4.打开拉取请求pull 5.合并自己的pull请求 git ...

  10. 电影《Green book》观后感_已补全:携带着种族歧视的“光环”,艰难地获得朋友的相互依赖,依然得享受生活的酸甜苦咸。

    目录 1.电影基本情况介绍 2.故事整个发展经历 3.观影感受 4.网友评论 <Green book>--绿皮书 作者总共看这部影片三次,第一次英文版慢看,第二次中文版快看,第三次中文版总 ...