2024年4月20日发(作者:)

一、istream/ostream流的基本概念

C++中的输入方法类和输出方法类都继承自IOS基类,见下图:

输入和输出操作分别由输入流istream和输出流ostream提供。iostream继承自

istream和ostream,允许双向的输入/输出操作。

二、iostream标准库的IO对象

iostream标准库定义了四个IO对象:

- 代表标准输入的istream类型对象;

- 代表标准输出的ostream类型对象;

- 代表标准错误的ostream类型对象,通常用来输出警告和错误信息;

- 代表标准错误的ostream类型对象,用来产生程序执行的一般信息。

一般情况下,系统将这些对象与执行窗口联系起来。在大多数系统下,可以利用重定

向,将这些流与所选择的文件联系起来。

cout、cerr、clog三者的区别:

经过缓冲后输出,默认输出到标准输出设备(显示器)上,可以被重定向;

不经过缓冲而直接输出,用于迅速输出错误信息,默认输出到标准输出上。由

于不被缓冲,错误消息直接发到显示器。一般不被重定向。

是cerr的缓冲版本。

cout、cerr的重定向:

(C++标准中cerr不能被重定向,但是多数编译器都支持cerr的重定向)

使用rdbuf()函数可以对cout和cerr进行重新定向,代码如下:

ofstream ofs("");

streambuf* pOutBuf = (());

streambuf* pErrBuf = (());

cout << "no error" << endl; // 输出到文件中