使用 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(使用前将#替换为@)