超级大乐透走势图网易:c++标准IO库简介

来源:百度文库 编辑:九乡新闻网 时间:2024/10/06 02:40:28

简介:

      c++的输入/输出(input/output)由标准库提供.标准库定义了一族类型,支持对文件和控制窗口等设备的读写.还定义了其他的一些类型,使string对象能够像文件一样操作,从而使我们无须IO就能实现数据与字符之间的转换.这些IO类型都定义了如何读写内置数据类型的值.

组成:

      IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型用于读写存储在内存中的string对象.图1列出了c++的IO类,图2阐明这些类型之间的继承关系.

条件状态:

      实现IO的继承是错误发生的根源。一些错误是可恢复的;一下错误则发生在系统底层,位于程序可修正的范围之外。IO标准库管理一系列条件状态成员,用来标记给定的IO对象是否处于可用状态,或者碰到了哪种特定的错误。表8-2列出了标准库定义的一组函数和标记,提供访问和操作流状态的手段。

 

流必须处于无错误状态,才能用于输入或输出。检测流是否可用的最简单的方法是检测其真值:

if(cin)

           //ok to use cin,it is in a valid state

While(cin>>word)

      //ok:read operation successful…

虽然许多程序只需要知道流是否有效,但某些程序则需要更详细地访问or控制流的状态,此时,除了知道流处于错误状态外,还必须了解它遇到了那种类型的错误。例如,程序员也许希望弄清楚是到达了文件的结尾,还是遇到了IO设备上的错误。

      所有流对象都包含一个条件状态成员,该成员由setstate和clear操作管理。这个状态成员为iostate类型,这是由各个iostream类分别定义的机器相关的整形。该状态成员以二进制为的形式使用。

      Badbit标志着系统级的故障,如无法恢复的读写错误。如果出现了这类错误,则该流通常就不能在继续使用了。如果出现的是可恢复的错误,如在希望获得数值型数据时输入了字符,此时则设置failbit标志,这种导致设置failbit的问题通常是可以修正的。eofbit是在遇到文件结束符是设置的,此时同时还设置了failbit。

输出缓冲区管理

clear和setstate操作用于改变条件成员的状态。clear将条件重设为有效状态。在流的使用出现了问题并做出补救后,如果我们希望把流重设为有效状态,则可以调用clear。使用setstate可以打开某个指定的条件,用于表示某个问题的发生。除了添加的标记状态,setstate将保留其他已存在的状态变量不变。

输出缓冲区管理:

      每个IO对象管理一个缓冲区,用于存储程序读写的数据.下面几种情况将导致缓冲区的内容被刷新,即写入真实的输出设备或者文件:

(1) 程序正常结束.

(2) 在一些不确定的时候,缓冲区可能已经满了,在这种情况下,缓冲区将会在写入下一个之值前刷新.

(3) 用操作符显示地刷新缓冲区,例如行结束符endl.

(4) 可将输出流与输入流关联起来.在这种情况下,在读输入流时竟刷新其关联的输出缓冲区.

1.    输出缓冲区的刷新

3个操作符:

      endl:用于输出一个换行符并刷新缓冲区。

      flush:刷新流,但不在输出中添加任何字符.

      ends:在缓冲区中插入空字符null,然后刷新它。

2.    unitbuf操作符

如果需要刷新所有输出,最好使用unitbuf操作符。这个操作符在每次执行完写操作后都刷新流:

      cout<

等价于:

      cout<<”first” <

nounitbuf操作符将流恢复为使用正常的,由系统管理的缓冲区刷新方式。

3.    将输入和输出绑在一起

当输入流与输出流绑在一起时,任何读输入流的尝试都将首先刷新其输出流关联的缓冲区。标准库将cout与cin绑在一起。