c++里关于cerr,clog,cout三者的区别
来源:互联网 发布:再见悲哀 知乎 编辑:程序博客网 时间:2024/04/23 21:44
全文转载自:这里
c++里关于cerr,clog,cout三者的区别:
cerr(无缓冲标准错误)-----没有缓冲,发送给它的内容立即被输出
clog(缓冲标准错误)--------有缓冲,缓冲区满时输出cout-------------------------标准输出
三个都是ostream类定义的输出流对象,
cout是在终端显示器输出,cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout流插入一个endl,不论缓冲区是否漫了,都立即输出流中所有数据,然后插入一个换行符.(所以说在cout中"\n"跟endl是有区别的)
cerr流对象是标准错误流,指定为和显示器关联,和cout作用差不多,有点不同就是cout
通常是传到显示器输出,但可以被重定向输出到文件,而cerr流中的信息只能在显示器输出.
clog流也是标准错误流,作用和cerr一样,区别在于cerr不经过缓冲区,直接向显示器输出信息,而clog中的信息存放在缓冲区,缓冲区满或者遇到endl时才输出.
转载地址:http://blog.csdn.net/templxj/article/details/1496629
关于缓冲区:
endl 是一个特殊值,称为操纵符,将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓冲区。通过刷新缓冲区,用户可立即看到写入到流中的输出。
程序员经常在调试过程中插入输出语句,这些语句都应该刷新输出流。忘记刷新输出流可能会造成输出停留在缓冲区中,如果程序崩溃,将会导致程序错误推断崩溃位置。
那么什么是刷新缓冲区呢?到网上找到资料如下:
以缓冲方式打开一个文件时,往文件里写几个字节,一般不会立即真正把这几个字节写入文件,只有当缓冲区满时才真正写盘。如果想在缓冲区满之前写盘保存,可以做冲刷缓冲区动作。
下列行为引发冲刷动作:
1)缓冲区满时;
2)行输出时遇endl,cerr或cin时;
3)执行冲刷函数;
4)关闭文件
0 0
- c++里关于cerr,clog,cout三者的区别
- c++里关于cerr,clog,cout三者的区别
- c++里关于cerr,clog,cout三者的区别
- c++里关于cerr,clog,cout三者的区别
- c++里关于cerr,clog,cout三者的区别
- c++里关于cerr,clog,cout三者的区别
- c++里关于cerr,clog,cout三者的区别
- cerr、clog、cout的区别
- cout,cerr,clog的区别
- 转:cerr cout clog 的区别
- c++中cout、cerr、clog的区别
- C++中cout、cerr、clog的区别
- C++中cout,cerr,clog的区别
- c++ cout cerr clog的区别
- C++中cout,cerr,clog的区别
- c++中cout、cerr、clog的区别
- 专-cerr,clog,cout区别
- 复习c++: 继承 , static, cerr , cout , clog
- 第八周项目一-实现复数类中的运算符重载(2)
- 拖动tableView的时候手键盘
- 15第八周项目三——分数类中的运算符重载(1)
- easyui 使用注意
- 如何解决音乐播放器重音问题
- c++里关于cerr,clog,cout三者的区别
- 第八周 项目一 实现复数类中的运算符重载2
- 十进制与自定义任意进制转换代码
- 兔子--计算listview的高度,解决listview与scrollview控件冲突
- Redis 实例:开发一个Spring Redis应用程序
- mysql navicat 新建函数出问题处理
- Docker基础技术:Linux Namespace【上】
- php header 常用头信息
- 第8周项目2-Time类中的运算符重载