我们都知道C++预定义了cin(标准输入流)和cout(标准输出流)。但今天突然又蹦出来两个cerr(标准错误流(非缓冲))和clog(标准错误流(缓冲))
,本着学习提高的态度在网上搜索了相关内容,下面是从百度知道获取的内容
ps:不知道是不是会侵权呀...... 首先通过一个例子就可以分析cout与cerr的区别,将下面代码编译链接后生成test.exe
 #include   <iostream.h>

 int   main()
{
cout << "hello world---cout" << endl ;
cerr << "hello world---cerr" << endl ;
return ;
}

在命令行模式下键入下面的命令: test >>cout.txt

  运行结果是:   
在生成的cout.txt文件中输出了"hello world---cout"
同时在显示器上输出了"hello world---cerr"
也就是说cout的输出可以重定向到一个文件中,而cerr必须输出在显示器上。 再分析下cerr与clog的区别,两者都是标准错误流, 区别在于cerr不经过缓冲区,直接向显示器输出信息,而clog中的信息存放在缓冲区,缓冲区满或者遇到endl时才输出. 至于为什么有cerr和clog(我感觉这才是重点),比如,你的程序遇到调用栈用完了的威胁(无限,没有出口的递归),你说,你到什么地方借内存,存放你的错误信息?
所以有了cerr。其目的,就是在你最需要它的紧急情况下,还能得到输出功能的支持。
缓冲区的目的,就是减少刷屏的次数——比如,你的程序输出圣经中的一篇文章。不带缓冲的话,就会每写一个字母,就输出一个字母,然后刷屏。有了缓冲,你将看到
若干句子“同时”就出现在了屏幕上(由内存翻新到显存,然后刷新屏幕)。 pps:以上内容来自网络,未得到验证,仅供学习参考。

C++ cout cerr 和 clog 的区别的更多相关文章

  1. cout,cerr和clog的区别

    官方解释: cout——Standard output stream Object of class ostream that represents the standard output strea ...

  2. 【C++】cout、cerr、clog之间的区别

    cout.cerr.clog三者都是标准IO库中提供的输出工具. 但是cout是支持重定向操作的.比如freopen()对于cout有效. clog和cerr主要用于错误输出. 因此,如果将程序输出重 ...

  3. C++常用输出 cout、cerr、clog

    三者在C++中都是标准IO库中提供的输出工具: cout:写到标准输出的ostream对象: cerr:输出到标准错误的ostream对象,常用于程序错误信息: clog:也是输出标准错误流(这点儿和 ...

  4. cout、cerr、clog

    其实大家平常常会用的主要有三个:cout.cerr.clog,首先简单介绍下三者. 这三者在C++中都是标准IO库中提供的输出工具(至于有关的重载问题在此不讨论): cout:写到标准输出的ostre ...

  5. MOOC C++笔记(七)输入输出流

    输入输出流 与输入输出流操作相关的类 istream:是用于输入的流类,cin就是该类的对象. ostream:是用于输出的流类,cout就是该类的对象. ifstream:是用于从文件读取数据的类. ...

  6. C++文件操作和模板

    1.数据层次 位 bit 字节 byte 域/记录 将所有记录顺序地写入一个文件---->顺序文件:一个有限字符构成的顺序字符流 C++标准库中:ifsteam,ofstream,fstream ...

  7. 读书笔记 effective c++ Item 54 让你自己熟悉包括TR1在内的标准库

    1. C++0x的历史渊源 C++标准——也就是定义语言的文档和程序库——在1998被批准.在2003年,一个小的“修复bug”版本被发布.然而标准委员会仍然在继续他们的工作,一个“2.0版本”的C+ ...

  8. C++ Primer学习笔记_1_快速入门

    C++快速入门 一 编写简单程序 // main是操作系统唯一显示调用的函数int main() {/**return返回的值是一个状态指示器 0:成功 非0:返回错误给OS*以echo $?命令可以 ...

  9. cerr与cout区别

    语言:C++ 一.简介 平常常会用的主要有三个:cout.cerr.clog,首先简单介绍下三者. 这三者在C++中都是标准IO库中提供的输出工具(至于有关的重载问题在此不讨论): cout:写到标准 ...

随机推荐

  1. 【canvas】基于坐标的碰撞检测 / 基本的动画 / 多物体动画

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. Light OJ 1038 - Race to 1 Again(概率DP)

    题目的意思是说任何一个大于1的整数,经过若干次除以自己的因子之后可以变为1, 求该变换字数的数学期望值.   题目分析: 我们设置dp[n] 为数字n的期望.假设n的因子为k1, k2, k3.... ...

  3. ubuntu错误解决。

    ubuntu中出现如下错误: W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise-backports/main/i ...

  4. redis基本用法

    java连接redis基本用法 package Redis;    import java.util.HashMap;  import java.util.List;  import java.uti ...

  5. 贪心+容器 hdu4268

    Problem Description Alice and Bob's game never ends. Today, they introduce a new game. In this game, ...

  6. BufferedInputStream详解

    BufferedInputStream是一个带有缓冲区域的InputStream,它的继承体系如下:  InputStream  |__FilterInputStream          |__Bu ...

  7. UINavigationBar-使用总结

    多视图应用程序中,我们常常使用到自定义UINavigationBar来完成导航条的设置.   1.获取导航条   UINavigationBar *navBar = self.navigationCo ...

  8. request和response的中文乱码问题

    request乱码指的是:浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码: response乱码指的是:服务器向浏览器发送的数据包含中文字符,浏览器中显示的是乱码:   ...

  9. 经常使用虚拟现实仿真软件总汇(zz)

     经常使用虚拟现实仿真软件总汇(zz)http://hi.baidu.com/busycai/blog/item/fe57e41e5f25fa1c403417b2.html 2007年09月07日 星 ...

  10. android 57 QQ登录

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...