cout,cerr和clog的区别
- 官方解释:
cout——Standard output stream
Object of class ostream that represents the standard output stream oriented to narrow characters (of type char
). It corresponds to the C stream stdout
cerr——Standard output stream for errors
Object of class ostream that represents the standard error stream oriented to narrow characters (of type char
). It corresponds to the C stream stderr
clog——Standard output stream for errors
Object of class ostream that represents the standard logging stream oriented to narrow characters (of type char
). It corresponds, along with cerr to the C stream stderr
可以看出这三者在C++中都是标准IO库中提供的输出工具,其中
cout:一个ostream对象,向标准输出写入数据;
cerr:一个ostream对象,通常用于输出程序错误信息,写入到标准错误;
clog:也是写入到标准错误,这点和cerr有点儿像,平常很少用到。
- 三者的区别:
1、cout的输出可以重定向到一个文件中,而cerr必须输出在显示器上。
2、cerr不经过缓冲区,直接向显示器输出信息, 而clog中的信息存放在缓冲区内, 缓冲区满或者遇到 endl 时才输出。
- 那么,为什么要有cerr和clog呢?
假设你的程序遇到调用栈用完了的威胁(无限,没有出口的递归),那么到什么地方借内存来存放错误信息?所以有了cerr。其目的,就是在你最需要它的紧急情况下,还能得到输出功能的支持。
缓冲区的目的,就是减少刷屏的次数——比如,你的程序输出圣经中的一篇文章。不带缓冲的话,就会每写一个字母,就输出一个字母,然后刷屏。有了缓冲,你将看到若干句子“同时”就出现在了屏幕上(由内存翻新到显存,然后刷新屏幕)。
参考自:https://blog.csdn.net/qq_38556370/article/details/80640845
cout,cerr和clog的区别的更多相关文章
- C++ cout cerr 和 clog 的区别
我们都知道C++预定义了cin(标准输入流)和cout(标准输出流).但今天突然又蹦出来两个cerr(标准错误流(非缓冲))和clog(标准错误流(缓冲)),本着学习提高的态度在网上搜索了相关内容,下 ...
- 【C++】cout、cerr、clog之间的区别
cout.cerr.clog三者都是标准IO库中提供的输出工具. 但是cout是支持重定向操作的.比如freopen()对于cout有效. clog和cerr主要用于错误输出. 因此,如果将程序输出重 ...
- C++常用输出 cout、cerr、clog
三者在C++中都是标准IO库中提供的输出工具: cout:写到标准输出的ostream对象: cerr:输出到标准错误的ostream对象,常用于程序错误信息: clog:也是输出标准错误流(这点儿和 ...
- cout、cerr、clog
其实大家平常常会用的主要有三个:cout.cerr.clog,首先简单介绍下三者. 这三者在C++中都是标准IO库中提供的输出工具(至于有关的重载问题在此不讨论): cout:写到标准输出的ostre ...
- MOOC C++笔记(七)输入输出流
输入输出流 与输入输出流操作相关的类 istream:是用于输入的流类,cin就是该类的对象. ostream:是用于输出的流类,cout就是该类的对象. ifstream:是用于从文件读取数据的类. ...
- C++文件操作和模板
1.数据层次 位 bit 字节 byte 域/记录 将所有记录顺序地写入一个文件---->顺序文件:一个有限字符构成的顺序字符流 C++标准库中:ifsteam,ofstream,fstream ...
- 读书笔记 effective c++ Item 54 让你自己熟悉包括TR1在内的标准库
1. C++0x的历史渊源 C++标准——也就是定义语言的文档和程序库——在1998被批准.在2003年,一个小的“修复bug”版本被发布.然而标准委员会仍然在继续他们的工作,一个“2.0版本”的C+ ...
- C++ Primer学习笔记_1_快速入门
C++快速入门 一 编写简单程序 // main是操作系统唯一显示调用的函数int main() {/**return返回的值是一个状态指示器 0:成功 非0:返回错误给OS*以echo $?命令可以 ...
- cerr与cout区别
语言:C++ 一.简介 平常常会用的主要有三个:cout.cerr.clog,首先简单介绍下三者. 这三者在C++中都是标准IO库中提供的输出工具(至于有关的重载问题在此不讨论): cout:写到标准 ...
随机推荐
- java网络编程基本知识
1.基本概念 网络:一组相互连接的计算机,多台计算机组成,使用物理线路进行连接 网络连接的功能:交换数据.共享资源 网络编程3要素: IP 地址:唯一标识网络上的每一台计算机,两台计算机之间通信的必备 ...
- MySQL 5.6 for Windows 解压缩版配置安装 和 MySQL 数据库的安装和密码的设定
https://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html https://jingyan.baidu.com/article/09 ...
- React Native & app demos
React Native & app demos https://github.com/ReactNativeNews/React-Native-Apps https://github.com ...
- BZOJ3032 七夕祭
https://remmina.github.io/BZPRO/JudgeOnline/3032.html 题目 背景 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ 今年举办了一次线 ...
- 网络知识之http请求
使用http超文本传输协议来访问web服务器 它定义了客户端和服务器之间交互的信息内容和步骤. 客户端解析url后发送请求消息---->服务器(解析请求消息,完成工作,包装结果为响应消息)--- ...
- 《AutoCAD Civil 3D .NET二次开发》勘误1
第十三章atc文件中Displayname应为DisplayName,注意Name的N为大写,否则参数名称无法正常显示. 给您带来的不便深表歉意!
- MYSQL OR与AND同时出现的用法
表中数据 MySQL中or和and的用法 SELECT * from student WHERE id = 1 or id = 2 AND age = 20; -- 查询结果是id = 2且age = ...
- 「Manacher算法」学习笔记
觉得这篇文章写得特别劲,插图非常便于理解. 目的:求字符串中的最长回文子串. 算法思想 考虑维护一个数组$r[i]$代表回文半径.回文半径的定义为:对于一个以$i$为回文中心的奇数回文子串,设其为闭区 ...
- magento 由于Httpd进程增多,导致CPU占用100%问题
由于Httpd进程增多,导致CPU占用100%问题 magento for version 2.2.3 前些天一直导致CPU无法控制的增多问题. 根据报错我设置了如下内容: [Mysql]mysql. ...
- 「ZJOI Day2」游记
Day-1 晚上一直在出自己做的模拟赛的T1,真的快要死掉了. 分类讨论几十种情况. 窝还是找了Bluesky大佬一起来验题,她瞬间就A掉了这一道题目...自闭了.. 诶,我还是太弱了. 之前教练组织 ...