gpt4 book ai didi

c++ - 为什么cerr输出比cout快?

转载 作者:行者123 更新时间:2023-11-30 02:34:13 26 4
gpt4 key购买 nike

使用 cout 需要更多时间来输出对我不利的语句。但是当使用 cerr 时,输出速度更快。为什么?

最佳答案

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

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

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

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

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

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

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

关于c++ - 为什么cerr输出比cout快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34663495/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com