首页 > 代码库 > cout、cerr、clog有何区别?
cout、cerr、clog有何区别?
windows+vs情况下:在控制台上,cout能重定向到文件,cerr和clog不能。输出重定向到文件实际上就是一个管道的一头连输出流,另一头连文件输入流
cout具有自己的缓冲区,当缓冲区满或遇到endl会刷新终端(默认是屏幕);cerr没有缓冲区,直接刷新终端
cout的写缓存操作和系统刷新终端的操作是异步的,所以会存在当程序崩溃的情况下按代码执行顺序应该输出的内容可能只输出了一部分,而不是全部输出,因为这个时候程序已经崩溃了
cout、printf其实是写缓存。这就存在一个问题,当缓冲区满了并且没有被消耗的情况下,cout、printf会被阻塞。如当程序A通过管道将cout的通过管道重定向到程序B的时候,若缓冲区满了,但程序B一直不消耗缓冲区,那么程序A中的cout会阻塞知道程序B消耗了缓冲区为止
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。