C++中cout和cerr的区别

2023-10-29

标准IO库定义的其中3个IO对象:

一个istream类型对象:cin

两个ostream对象:cout,cerr

cin:读取标准输入的istream对象,对应于标准输入流(关联到标准输入设备,通常为键盘)。用来读取用户在终端上的输入内容,通过input运算符(>>)将输入内容定向到具有适当类型的对象身上;

cout:写到标准输出的ostream对象,对应于标准输出流(关联到标准输出设备,通常为显示器)。用来将信息写到用户的终端上,output运算符(<<)可以将数据定向到cout

cerr:输出到标准错误的ostream对象,对应于标准错误流(关联到标准输出设备,通常为显示器),常用于显示程序错误信息;

 

cerr与cout的异同点:

相同点:均可将其输出结果定向到用户的终端,均可将流关联到到标准输出设备(通常为显示器)

差异点:

1、cout经过缓冲后输出。这是一个被缓冲的输出,是标准输出,并且可以重新定向(暂时不理解);

2、cerr对应的标准错误流不经过缓冲而被直接发送给屏幕,而不会等到缓冲区填满或新的换行符,才被显示。一般情况下不被重定向。(暂时不理解)。

 

为什么有cerr?

比如,你的程序遇到调用栈用完了的威胁(无限,没有出口的递归)。

你说,你到什么地方借内存,存放你的错误信息?所以有了cerr。

其目的,就是在你最需要它的紧急情况下,还能得到输出功能的支持。

 

缓冲区的目的,就是减少刷屏的次数——比如,你的程序输出圣经中的一篇文章。不带缓冲的话,就会每写一个字母,就输出一个字母,然后刷屏。有了缓冲,你将看到若干句子“同时”就出现在了屏幕上(由内存翻新到显存,然后刷新屏幕)。

 

参考文章:https://blog.csdn.net/Garfield2005/article/details/7639833

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++中cout和cerr的区别 的相关文章

随机推荐

  • 2019年利用qshell将七牛云存储文件下载到本地的方法

    最近在做一个有赞微商城的课程设置 想着先丰富微商城的课程内容 于是就想到了使用之前课程网站的视频 第一步当然就是要把课程视频下载下来 但由于原来网站的视频都是技术开发人员之前把视频上传到了七牛后调用的 而且还做了防盗链处理 于是找到七牛云存
  • cuBLAS使用(1)

    cuBLAS 的 API 参考指南 CUDA 基本线性代数子程序库 CUDA Basic Linear Algebra Subroutine 介绍 cuBLAS库是在NVIDIA CUDA 运行时之上实现的BLAS 基本线性代数子程序 它允
  • buucft web (exec)

    一 解题 打开链接 发现是一道ping题 于是便输入本地IP127 0 0 1查看回显 发现回显正常 然后便测试管道符合 是否可用并输入 127 0 0 1 ls 来查看文件目录 结果发现管道符合 并未禁用且发现以下两个文件目录 然后输入
  • 转盘中文字部分的实现(没啥用,别看)

    text width 642rpx height 642rpx width 590rpx height 590rpx margin left 26rpx margin top 26rpx display flex justify conte
  • uniapp上传图片视频文件集合组件

  • 分享一个科幻风的404

    先看效果 再看代码
  • 华为OD机试 C++ 最大可靠性设备

    题目 你正在组装一台设备 这台设备由不同种类的零件组成 每种类型的零件都需要一个 每个零件都有自己的 可靠度 和价格 昂贵的零件通常具有更高的可靠度 但是 组装完成的设备的可靠度是由所有零件中可靠度最低的那个决定的 也就是说 如果你有5个零
  • Redis操作工具类

    前期文章中关于RedisOperateUtil工具类使用时需要强制类型转换 针对List等操作不方便 为此特意更新RedisOperateUtil工具类 前文链接 https blog csdn net liwenyang1992 arti
  • 前端面试知识点总结

    前端知识点 vue知识点 Vue的两个核心点 组件渲染更新的过程 Vue的MVVM实现流程 虚拟 DOM patch 方法 diff 算法 什么是patch patch的流程 说一下指令v el的作用是什么 nextTick 使用场景和原理
  • Java 5-3、用户模块-Mapper.xml的SQL整理

    5 3 用户模块 Mapper xml的SQL整理 一 SQL总结 三个 select SQL login findUserById findUserByAccount 一个 insert SQL register 一个 update SQ
  • vue3+vant4结合(vue-i18n)实现国际化语言切换

    1 先安装i18n npm install vue i18n 2 配置多语言文件 先进行国际化配置在src下创建一个lang文件夹并在其中创建index js zh js en js文件 若为TS 更改文件后缀即可 自定义语言格式 expo
  • 测试数据又多又乱?自动化软件测试数据管理平台Parasoft DTPv2021.1发布

    Parasoft DTP 汇总来自不同测试实践的结果 提供对测试结果的智能和持续监控 消除了与错误软件相关的业务风险 加快了交付速度 并促进了持续的流程改进 DTP 监控和测量质量实践的应用 例如静态分析 单元测试 覆盖分析 运行时错误检测
  • burpsuite插件自动识别图片验证码暴力破解

    burpsuite插件自动识别验证码暴力破解 1 准备工具 2 工具配置 2 1 burp导入captcha killer modified 0 14 jar 2 1 1 先生成jar包 2 1 2 再将jar包导入burp 2 2 kal
  • linux %s替换命令,linux vi 替换命令

    linux vi 替换命令 发布时间 2010 10 22 16 34 53 作者 佚名 我要评论 久了没用vi 命令都忘了 到网上找了些 记录下 以下内容出自网络 来源已经不详 vi vim 中可以使用 s 命令来替换字符串 以前只会使用
  • 高效程序员工作法(八)

    目录 前言 一 如何做好验收测试 一句话总结 二 你的代码是怎么变混乱的 一句话总结 三 总是在MVC分层架构 但你真的理解分层么 一句话总结 四 为什么总有人觉得5万块钱可以做一个淘宝 一句话总结 五 先做好DDD再谈微服务吧 那只是一种
  • CTFshow-pwn入门-前置基础pwn29-pwn31

    什么是PIE 由于ASLR是一种操作系统层面的技术 而二进制程序本身是不支持随机化加载的 便出现了一些绕过方法 例如ret2plt GOT劫持 地址爆破等 于是 人们于2003年引入了位置无关可执行文件 Position Independe
  • TMDS协议

    1 概述 1 1 连接结构 图1 TMDS连接结构 数据流中包含了像素和控制数据 发送器在任何给定的输入时钟周期 到底是编码像素数据还是控制数据取决于数据使能信号DE DE有效时 指示像素数据要被发送 注意 当发送像素数据的时候 忽略控制数
  • echarts中的饼状图设置颜色

    第一种方式 color FE8463 red green 第二种方式 itemStyle normal color function params 自定义颜色 var colorList FE8463 red green return co
  • windows2008服务器维护,Windows Server 2008R2 & windows server 2012 R2

    PAGE TITLEWindows Server 2008R2 windows server 2012 R2 windows服务器维护 86988 net contacts DESCRIPTIONMd5 file get DT ROOT l
  • C++中cout和cerr的区别

    标准IO库定义的其中3个IO对象 一个istream类型对象 cin 两个ostream对象 cout cerr cin 读取标准输入的istream对象 对应于标准输入流 关联到标准输入设备 通常为键盘 用来读取用户在终端上的输入内容 通