转:c++里关于cerr,clog,cout三者的区别

c++里关于cerr,clog,cout三者的区别:c++

 

cerr(无缓冲标准错误)-----没有缓冲,发送给它的内容当即被输出程序员

clog(缓冲标准错误)--------有缓冲,缓冲区满时输出 cout-------------------------标准输出 三个都是ostream类定义的输出流对象, cout是在终端显示器输出,cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout流插入一个endl,不论缓冲区是否漫了,都当即输出流中全部数据,而后插入一个换行符. cerr流对象是标准错误流,指定为和显示器关联,和cout做用差很少,有点不一样就是cout 一般是传到显示器输出,但可以被重定向输出到文件,而cerr流中的信息只能在显示器输出.函数

clog流也是标准错误流,做用和cerr同样,区别在于cerr不通过缓冲区,直接向显示器输出信息,而clog中的信息存放在缓冲区,缓冲区满或者遇到endl时才输出. spa

 

 

转载地址:http://blog.csdn.net/templxj/article/details/1496629 .net

 

关于缓冲区:调试

 

endl 是一个特殊值,称为操纵符,将它写入输出流时,具备输出换行的效果,并刷新与设备相关联的缓冲区。经过刷新缓冲区,用户可当即看到写入到流中的输出。  程序员常常在调试过程当中插入输出语句,这些语句都应该刷新输出流。忘记刷新输出流可能会形成输出停留在缓冲区中,若是程序崩溃,将会致使程序错误推断崩溃位置。 对象

 

那么什么是刷新缓冲区呢?到网上找到资料以下:blog

 

以缓冲方式打开一个文件时,往文件里写几个字节,通常不会当即真正把这几个字节写入文件,只有当缓冲区满时才真正写盘。若是想在缓冲区满以前写盘保存,能够作冲刷缓冲区动做。vps

下列行为引起冲刷动做: 1)缓冲区满时; 2)行输出时遇endl,cerr或cin时; 3)执行冲刷函数; 4)关闭文件。内存

 

原文地址:http://blog.csdn.net/mvpsendoh/article/details/6025882

相关文章
相关标签/搜索