分享

cout、cerr和clog的区别

 renhl252 2014-09-06

cout 标准输出流 对应设备为屏幕,也可以被重定向输出到磁盘文件。经过缓冲区,缓冲区满后或遇到endl时向显时器输出。

cerr 标准错误流 对应设备为屏幕,不经过缓冲区,直接向屏幕输出有关信息。

clog 标准错误流 对应设备为屏幕。经过缓冲区,缓冲区满后或遇到endl时向显时器输出。

====================================================================

cout clog 经过缓冲区,cerr不经过;

●输出位置默认都为屏幕,
重定向    
        cout  可执行程序 > 1.txt  或者 可执行程序 1> 1.txt 
        cerr clog 可执行程序 2> 1.txt

        可执行程序 1>1.txt 2>&1  cout cerr clog输出到一个文件。

====================================================================

1.cout流
cout是console output的缩写。cout不是c++预定义的关键字,它是ostream流类的对象,在iostream中定义。

cout流在内存中对应开辟了一个缓冲区,用来存放流的数据,当向cout流插入一个endl时,
不论缓冲区是否已满,都立即输出流中所有数据,然后插入一个换行符。

在iostream中只对 << 和  >>运算符用于标准类型数据的输入和输出进行了重载。
用户自定义的类型数据输入和输出需要自己定义重载。

cout 流通常是传送到显示器输出,但也可以被重定向输出到磁盘文件。


2.cerr流
cerr流是标准错误流,被指定与显示器关联。
不经过缓冲区,直接输出给屏幕。

cout 流通常是传送到显示器输出,但也可以被重定向输出到磁盘文件。
而cerr流中的信息只能在显示器输出。


3.clog流对象
clog流对象也是标准错误流,它是console log的缩写。它的作用和cerr相同,都是在终端显示器上显示出错信息。
它们之间只有一个微小的区别:cerr是不经过缓冲区,直接向显示器上输出有关信息,而clog中的信息存放在缓冲区中,缓冲区满后或遇到endl时向显时器输出。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多