C++初学者指南 第十一篇(2)

转载请标明出处:http://blog.csdn.net/zhangxingping

必备技能11.2C++中的流类ios

正如咱们在第一篇中学习到的那样,C++中对输入输出系统的支持都是在<iostream>中提供的。在该头文件中定义了一些至关复杂的类层次的集合,它们用来支持输入和输出的操做。输入输出类是从一个系统模版类开始的。咱们将在地12篇中学习到,模版定义了类的通用形式,而不用具体指明这些类操做的数据的类型。标准C++从这些模版中定义了两个具体的和输入输出库相关的类:其中一个是针对8位字符集的,一个是针对宽位字符集的。这些类和其它的类同样,咱们不须要熟悉模版相关的知识也能很好地使用这些输入输出的功能。编程

C++中的输入输出系统是基于两个相关可是又有区别的模版类的。一个是从低级的输出输出类继承而来的,叫作basic_streambuf。这个类提供基础的低级的输入和输出操做,并提供了对整个C++输入输出系统的支持。咱们没有必要直接使用basic_streambuf这个类,除非咱们要进行高级的输入输出编程。类层次中咱们常常用到的是从basic_ios派生的类。这是一个高级的输入输出类。它提供了格式化,错误检查以及输入输出流的状态信息。basic_ios是多个派生类的基类,包括basic_istreamasic_iostreambasic_iostream。它们能够分别北用来建立用于输入、输出、输入和输出的流。函数

正如咱们解释的那样,输入输出库中建立了两个版本的输出输出类层次:一个是针对8位的字符集的;一个是针对宽位字符集的。本书中咱们只讨论针对8位字符集的类,这是由于到目前为止,它是最经常使用到的。下面是模版类名称和基于字符的类名称的对应表:学习

 

模版类名称spa

对应的基于字符的类名称.net

basic_streambufblog

streambuf继承

basic_iosget

ios源码

basic_istream

istream

basic_ostream

ostream

basic_iostream

iostream

basic_fstream

fstream

basic_ifstream

ifstream

basic_ofstream

ofstream

  

咱们将在本书的后面使用到上面的基于字符的类名。这些类也是咱们在程序中要用到的类,也是在老版本的输入输出库中用到的名称。这也是为何老版本的和新版本的输入输出库在源码级上是兼容的。

最后一点:类ios包含了许多成员函数和变量用来控制或者件事流的基本操做。咱们将常常引用这些成员函数或者变量。牢记,只要咱们在程序中包含了<iostream>,咱们就能够访问这个重要的类了。

练习:

1. 什么是流?什么是文件?

2. 和标准输出相关联的类是哪一个类?

3. C++中的输入输出是由一系列成熟的类层次来支持的,对吗?