cout、cerr与clog

本文详细介绍了C++中的输出流对象cout、cerr和clog的区别。cout带有缓冲区,用于常规输出,endl会刷新缓冲区。cerr不经过缓冲区,直接输出,通常用于错误信息,不能重定向到文件。clog与cerr类似,但使用较少。了解这些差异有助于优化程序的输出和错误处理策略。
摘要由CSDN通过智能技术生成

cout:一个ostream对象,向标准输出写入数据;

cerr:一个ostream对象,通常用于输出程序错误消息,写入到标准错误;

clog:一个ostream对象,用于产生程序执行的一般信息;


cout流在内存中开辟了一个缓冲区,用来存放流中的数据,当向cout流插入一个endl,不论缓冲区是否满,都立即输出流中的所有的数据,并且插入一个换行符(当然程序正常结束或者缓冲区满时,也会导致缓冲刷新,即数据真正的写到输出设备或者文件)。关于缓冲区的刷新时间见 C++ Primer P281 第五版中文版。

而cerr不经过缓冲区,直接向显示器输出信息,正是由于这个原因,cerr是不能被重定向到文件的;比如下面的例子:

#include <iostream>
using namespace std;

int main()
{
    cout << "cout" << endl;
    cerr << "cerr" << endl;
    return 0;
}
编译运行程序之后假设产生text.exe,在windows的cmd命令行下使用下面的命令:
text.exe > text.log

执行这个.exe文件,你会看到 命令行的输出为:

cerr

在命令行中的输出只有cerr;并且使用记事本查看text.log这个文件的话&#

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值