为什么 cerr 输出比 cout 快?

2024-01-04

使用 cout 需要多一点时间来输出语句,这对我来说不太好。但是当使用 cerr 时,输出速度更快。为什么?


只是想帮忙: -cout -> 常规输出(控制台输出) - cerr -> 错误输出(控制台错误)

cout 是缓冲的,而 cerr 不是,因此在大多数情况下 cout 应该更快。 (尽管如果您真的关心速度,C 输出函数(例如 printf)往往比 cout/cerr 快得多)。 cout 和 cerr 是 ostream 对象。您可以在应用程序内对它们调用 rdbuf(),以将其输出独立重定向到您想要的任何位置。如果需要,您可以打开网络套接字,将其包装在流缓冲区中并重定向到那里。

默认情况下,cout 与应用程序的标准输出相关联。默认情况下,标准输出是屏幕。您可以指示操作系统将 stdout 重定向到其他地方。或者它也可以自己完成——例如,Linux 中的 nohup 实用程序就是这样做的。我认为 Windows 中的服务也有其标准流重定向。

并且,cerr 与应用程序的标准错误相关。默认情况下,标准错误是屏幕。您可以再次将 stderr 重定向到其他地方。 这里的另一个问题是,默认情况下,clog 像 cout 一样进行缓冲,而 cerr 是单位缓冲的,这意味着它在每次完成输出操作后自动调用lush()。这非常有用,因为这意味着如果应用程序随后直接崩溃,输出不会在缓冲区中丢失。

如果你运行这样的程序: 你的程序 > 你的文件

您写入 cout 的内容将写入您的文件。您写入 cerr 的内容将显示在您的屏幕上。这通常是一件好事。我可能不希望您的错误消息与程序输出混合在一起。 (特别是如果您的某些错误消息只是警告或诊断内容)。 也可以将 cout 重定向到 1 个文件,将 cerr 重定向到另一个文件。这是一个方便的范例:我运行你的程序,将输出重定向到一个文件,将错误消息重定向到另一个文件。如果你的程序从 main 返回 0,那么我就知道可以处理输出文件了。如果它返回错误代码,我知道不要处理输出文件。错误文件会告诉我出了什么问题。

参考 : -http://www.tutorialspoint.com/cplusplus/cpp_basic_input_output.htm http://www.tutorialspoint.com/cplusplus/cpp_basic_input_output.htm - http://cboard.cprogramming.com/cplusplus-programming/91613-cout-cerr-clog.html http://cboard.cprogramming.com/cplusplus-programming/91613-cout-cerr-clog.html

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

为什么 cerr 输出比 cout 快? 的相关文章

随机推荐

  • 如何在 Silverlight 5 中使用 VisualStateManager 重用 Storyboard

    这个问题以前曾被问过 但在大多数情况下不超过 2 年前 并且通常特定于 WPF 答案可能还是一样 但就这样了 我正在尝试构建一个三角形 箭头 按钮 当鼠标悬停在其上方时 该按钮会改变颜色并增大尺寸 我已经用一个按钮实现了这一点 但现在我需要
  • 如何在android视频视图中播放某个URL位置的视频?

    我试图在视频视图中播放 youtube 视频 但始终出现错误 无法播放此视频 在设备上以及模拟器上 请帮我解决这个问题 提前致谢 import android app Activity import android net Uri impo
  • body2 已弃用,不应使用。这是 2014 年版材料设计中使用的术语。 - 颤振中的警告消息

    如果您从版本更新flutter SDKv1 12 13之后的任何版本v1 13 8 您将收到几条与 textTheme 使用相关的警告消息 例如 下面给出其中之一 信息 body2 已弃用 不应使用 这是 2014 年版材料设计中使用的术语
  • 如何将哈希转换为 JSON,且转换后的字符串不包含反斜杠

    我正在使用将哈希值转换为 JSONto json 但转换后的字符串充满了反斜杠 如果我使用puts 它显示正确的字符串 但如果我传入一个HTTP NET request body 字符串中充满了反斜杠 data a gt b c gt d
  • 从 CSV 数据流 python 创建字典

    我正在尝试从 python 中的 csv 数据创建一个字典 我不想使用传统的 split 然后使用将行重命名为我想要的标题 因为我将收到具有不同格式的不同 csv 文件信息量很大 而且我将无法使用该方法一致地定位我想要的行 标头名称将是一致
  • Drupal 从 Twitter 导入推文作为节点

    我希望能够将我的推文作为 Nndes 从 twitter 导入到 Drupal 中 我希望能够链接 names and tags返回正确的页面 我也不希望 myTweeterName 出现在推文的开头 你会怎样做呢 twitter 模块不创
  • 使用 javascript 计算日期与开始日期和天数

    我正在尝试根据开始日期和天数计算日期 因此基本上将天数添加到开始日期并获取结束日期 问题是我得到了一些奇怪的结果 但只有一次约会 我已经花了几天时间试图弄清楚这个结果 其功能是 CallculateDateFromDays function
  • 如何使表格水平滚动并固定第一列和最后一列

    我下面有这张表 我希望它可以滚动 水平方向 但我想要表格的第一列和最后一列 是固定的 而中间的列是可滚动的 关于如何做的任何想法 来完成这个 我想在没有任何插件的情况下执行此操作 JavaScript 我的 css 位于 html 之后 谢
  • 适用于 iOS (xcode) 的 LZMA SDK 解压缩使用过多 RAM

    我正在尝试在 iPhone iPad 应用程序中使用 LZMA SDK 我的起点是 Mo Dejong 提供的 iPhone 的 LZMA 示例项目 可在此处获取 https github com jk lzmaSDK https gith
  • Clojure 的“core.logic”中的目标排序

    以下 Clojure 代码 https gist github com 4525736 uses core logic以两种不同的顺序解决具有相同目标的相同逻辑问题 这种排序选择会导致一个很快完成 另一个则挂起 use clojure co
  • 格式化 Carbon 日期实例

    我有一个返回以下日期时间的数组 item created at gt 2015 10 28 19 18 44 如何将日期更改为M d Y在 Laravel 中使用 Carbon 格式化 目前它返回错误 suborder payment da
  • 使用 Logback SizeAndTimeBasedFNATP 时如何限制每天的文件数量

    使用Logback SizeAndTimeBasedFNATP触发策略时 如何限制每天的文件数量 例如 在任何一天 我都不希望拥有超过 100MB 的日志 鉴于每个日志 在下面的示例中 为 20MB 我希望能够将每天的最大限制设置为 5 个
  • 如何在下拉列表中选择完整的日历月份和年份

    我有一个完整的日历 我需要在下拉列表中显示它的月份和年份 我知道这个问题已经被问过 但仍然没有得到解答 我是完整日历的新手 据我所知 它现在已更新 希望有一些最简单的方法来实现 而不是给它 gotodate 选项 我已经为日历创建了代码笔
  • 在 WebForms 应用程序中验证AntiForgeryToken

    我已经阅读了一些有关使用的内容ValidateAntiForgeryToken防止 XSRF CSRF 攻击 然而我所看到的似乎只与 MVC 有关 这些是我看过的文章 ValidateAntiForgeryToken 目的 解释和示例 ht
  • 禁用整个页面的 UpdateProgress

    我已经检查过这个解决方案 有没有办法禁用某些异步回发的 UpdateProgress https stackoverflow com questions 6299072 is there a way to disable updatepro
  • Jenkins 工作流程:如何获取或设置步骤 ID

    我们想引用 Jenkins 工作流程并行任务中的一个步骤 但似乎对于多个并行任务中的步骤创建的步骤 ID 是不确定的 对于输入步骤 可以手动指定步骤 ID 是否可以为 shell 步骤指定步骤 id 或查询步骤 id 目的是我们希望在并行任
  • 使用 jquery 和 canvas 从 html 元素 id 到另一个 html 元素绘制线条

    html和jquery是否可以只通过引用元素id来画一条线 我在文本中有一个重要的单词 并且想在该单词和描述它的图像之间画一条线 我已经看到可以使用画布在元素之间进行绘制 但它们的样式位置设置为绝对 由于我的元素是文本中的单词 因此我无法将
  • Windows 运行时组件中无法继承?

    设想 我的 Windows 运行时组件项目中有 3 个类 A B C class A public sealed class B A public sealed class C A 编译上面的代码 我得到以下内容error 可访问性不一致
  • 如何检查 pandas 数据框中的字符串值序列并输出后续内容

    我正在尝试检查数据框中 B B B 的顺序 d A A B C D B B B A A E F B B B F A A testdf pd DataFrame data d array seq pd Series B B B for i i
  • 为什么 cerr 输出比 cout 快?

    使用 cout 需要多一点时间来输出语句 这对我来说不太好 但是当使用 cerr 时 输出速度更快 为什么 只是想帮忙 cout gt 常规输出 控制台输出 cerr gt 错误输出 控制台错误 cout 是缓冲的 而 cerr 不是 因此