cout、cerr、clog有何区别?


  • windows+vs情况下:在控制台上,cout能重定向到文件,cerr和clog不能。输出重定向到文件实际上就是一个管道的一头连输出流,另一头连文件输入流

  • cout具有自己的缓冲区,当缓冲区满或遇到endl会刷新终端(默认是屏幕);cerr没有缓冲区,直接刷新终端

  • cout的写缓存操作和系统刷新终端的操作是异步的,所以会存在当程序崩溃的情况下按代码执行顺序应该输出的内容可能只输出了一部分,而不是全部输出,因为这个时候程序已经崩溃了

  • cout、printf其实是写缓存。这就存在一个问题,当缓冲区满了并且没有被消耗的情况下,cout、printf会被阻塞。如当程序A通过管道将cout的通过管道重定向到程序B的时候,若缓冲区满了,但程序B一直不消耗缓冲区,那么程序A中的cout会阻塞知道程序B消耗了缓冲区为止


转载于:https://my.oschina.net/simplefocus/blog/304064

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值