C++:流

流:不要把他理解的太复杂,就简单的理解为流水,从一个地方输送到另外一个地方。从数据层面理解:数据输入和输出的过程也是数据传输的过程。数据像水一样从一个地方流动到另一个地方,因此,在 C++ 中将此过程称为 “流(stream)”。

比如c++中的输入输出流,就是cin,cout。分别用于从键盘输入数据和向屏幕输出数据(简称为标准 I/O)。除此之外,程序还可以从文件中读入数据,以及向文件中写入数据(简称为文件 I/O)。

在 C++ 的标准类库中,将用于进行数据输入输出的类统称为“流类”。cin 是流类 istream 的对象,cout 是流类 ostream 的对象。要使用流类,需要在程序中包含 iostream 头文件。

iostream 头文件中定义了四个标准流对象,它们是 cin、cout、cerr 和 clog。

  • cin 对应于标准输入流,用于从键盘读取数据,也可以被重定向为从文件中读取数据。
  • cout 对应于标准输出流,用于向屏幕输出数据,也可以被重定向为向文件写入数据。
  • cerr 对应于标准错误输出流,用于向屏幕输出出错信息,不能被重定向。
  • clog 对应于标准错误输出流,用于向屏幕输出出错信息,不能被重定向。

cerr 和 clog的区别在于:cerr 不使用缓冲区,直接向显示器输出信息;而输出到 clog 中的信息会先被存放到缓冲区,缓冲区满或者刷新时才输出到屏幕。

cout 可以被重定向,而 cerr 不能。所谓重定向,就是将输入的源或输出的目的地改变。例如,cout 本来是输出到屏幕上的,但是经过重定向,本该输出到屏幕上的东西就可以被输出到文件中。

 freopen("test.txt", "w", stdout);  //将标准输出重定向到 test.txt文件

freopen 是一个标准库函数,第二个参数 w 代表写模式,第三个参数代表标准输出。该语句的作用是将标准输出重定向为 test.txt 文件。重定向之后,所有对 cout 的输出都不再出现在屏幕上,而是出现在 test.txt 文件中

cin 也是可以被重定向的。如果在程序中加入

freopen("input.dat", "r", stdin);

第二个参数 r 代表读入方式,第三个参数 stdin 代表标准输入。执行此语句后,cin 就不再从键盘读入数据,而是从 input.dat 文件中读人数据,input.dat 文件中有什么,就相当于从键盘输入了什么。

文件参照博客:https://mp.csdn.net/console/editor/html/104722549

 


版权声明:本文为m0_37957160原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。