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

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

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

clog(缓冲标准错误)--------有缓冲,缓冲区满时输出 cout-------------------------标准输出 三个都是ostream类定义的输出流对象, cout是在终端显示器输出,cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据,当向cout流插入一个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)关闭文件。

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

时间: 2024-10-28 14:17:35

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

ostream类的3个输出流对象cout,cerr,clog区别和使用

ostream类定义了3个输出流对象:cout,cerr,clog. cerr和clog都是标准错误流,其区别是:cerr不经过缓冲区直接向显示器输出信息:clog中的信息存放在缓冲区,缓冲区满后或遇endl向显示器输出. 例:求解一元二次方程,若公式出错,用cerr流输出有关信息. 解:程序: #include<iostream> #include<cmath> using namespace std; int main() { float a, b, c, disc; cout

C#中数组、ArrayList和List三者的区别

在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢. 数组 数组在C#中最早出现的.在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单. [csharp] view plaincopy <span style="font-family:SimSun;font-size:18px;">//数组 string[] s=new string[2]; //赋值 s[0]="a"; s[1]=&quo

菜鸟,大牛和教主,三者的区别(转载,有种莫名的喜感。。。)

对菜鸟来说题目有三种:会算法且能AC的,会算法但不能AC的,不会做的 对大牛来说题目有两种:会做的,不会做的 对教主来说题目有两种:能AC的,数据有错的 菜鸟提交WA了,找了N久找不出错时,在论坛大骂数据有错,但是没人理 大牛提交WA了,找了N久找不出错时,写暴力程序或者求别人的AC程序对拍 教主提交WA了,Judge马上修正数据 菜鸟面对一道难题,直接暴搜 大牛面对一道难题,算了算时间复杂度不对,或者证明出是NP难,果断放弃 教主面对一道难题,说,虽然我不会做,但AC还是没有问题的 菜鸟AC了

swift 里 1..2 和 1...2 的区别【chinaswift】

摘自:http://chinaswift.me/forum/2/49 swift 里 1..2 和 1...2 的区别[chinaswift],布布扣,bubuko.com

菜鸟,大牛和教主三者的区别(转自hzwer)

菜鸟,大牛和教主,三者的区别 对菜鸟来说题目有三种:会算法且能AC的,会算法但不能AC的,不会做的 对大牛来说题目有两种:会做的,不会做的 对教主来说题目有两种:能AC的,数据有错的 菜鸟提交WA了,找了N久找不出错时,在论坛大骂数据有错,但是没人理 大牛提交WA了,找了N久找不出错时,写暴力程序或者求别人的AC程序对拍 教主提交WA了,Judge马上修正数据 菜鸟面对一道难题,直接暴搜 大牛面对一道难题,算了算时间复杂度不对,或者证明出是NP难,果断放弃 教主面对一道难题,说,虽然我不会做,但

SIEM、SOC、MSS三者的区别与联系

SIEM.SOC.MSS三者的区别与联系 前言 SIEM和SOC在国内并不是一个新兴的名词,相反在国内安全圈内经过了10余年的挣扎,SIEM已经趋于成熟,但是SOC仍处于一个鸡肋的位置,我认为其主要原因在SOC受制于国内体制.政策.相关日志标准.应用环境.传统认识的制约,从而它在国内一开始就是以产品的方式出现.缺少了MSS的辅助SOC就像是要求汽车驾驶员去驾驶维护飞机,这也是国内SOC一直无法用起来的主要原因. 而以SOC为基础的MSS(可管理安全服务)一直无法发展状大的原因有二. 欧美国家对M

x64、x86_64、x64三者的区别

x86是指intel的开发的一种32位指令集,从386开始时代开始的,一直沿用至今,是一种cisc指令集,所有intel早期的cpu,amd早期的cpu都支持这种指令集,ntel官方文档里面称为“IA-32” x84_64是x86 CPU开始迈向64位的时候,有2选择:1.向下兼容x86.2.完全重新设计指令集,不兼容x86.AMD抢跑了,比Intel率先制造出了商用的兼容x86的CPU,AMD称之为AMD64,抢了64位PC的第一桶金,得到了用户的认同.而Intel选择了设计一种不兼容x86的

[Java开发问题-3] jdk里的jre与外面jre的区别

问题:jdk里的jre与外面jre的区别 分析:如果我们安装了JDK,那么我们的电脑中将会有C:\Program Files (x86)\Java\jdk1.8.0_05文件夹 ,这个文件夹里面有一个jre文件夹.然后我们再安装jre,此时我们的电脑中有C:\Program Files (x86)\Java\jre8文件夹. 通过对比jre和jre8文件夹中的东西,我们发现基本是一样的,那么这俩文件夹到底有啥区别呢? 我们暂且成jre为自带jdk-jre,jre8为公共jre. jdk-jre与

String,StringBuilder,StringBuffer三者的区别

参考   String,StringBuilder,StringBuffer三者的区别 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面. 1.运行速度 首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,