为什么cerr输出比cout快
Why cerr output faster than cout?
使用cout需要多一点时间来输出语句,这对我来说不太好。但使用cerr时输出更快。为什么?
只是想提供帮助:-cout->常规输出(控制台输出)-cerr->错误输出(控制台错误)
cout是缓冲的,cerr不是,所以在大多数情况下cout应该更快。(尽管如果你真的关心速度,像printf这样的C输出函数往往比cout/cerr快得多)。cout和cerr是ostream对象。您可以对它们调用rdbuf(),以便从应用程序内部将它们的输出独立重定向到任何需要的位置。如果您愿意,您可以打开一个网络套接字,将其封装在流缓冲区中并重定向到那里。
默认情况下,cout与应用程序的标准输出绑定。默认情况下,标准输出为屏幕。您可以指示操作系统将stdout重定向到其他地方。或者它可以自己做——例如,Linux中的nohup实用程序就是这样做的。我认为,Windows中的服务也会重定向其标准流。
而且,cerr与应用程序的标准错误有关。默认情况下,标准错误是屏幕。您可以再次将stderr重定向到其他位置。这里的另一个问题是,默认情况下,阻塞是像cout一样缓冲的,而cerr是单元缓冲的,这意味着它在每次完成输出操作后都会自动调用flush()。这非常有用,因为这意味着如果应用程序随后直接崩溃,则输出不会在缓冲区中丢失。
如果您运行这样的程序:yourprog>yourfile
你给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
- std::cout输出int时出现编译错误
- 为什么'std::cout << !+2 '输出 0?
- 在视觉工作室中以十六进制进行位移位并通过 cout 输出
- 为什么cout输出内存地址不是字符串?
- 如何在c++中将方法的cout输出输出到流文件中
- cout 输出乱码消息行,而不是实际用户的 cout 语句
- 如何在运行时禁用COUT输出
- bool:不正确的cout输出,而不是0或1
- "cout << cout" - 输出代表什么?
- Xcode调试器未显示C++cout输出
- 为什么 std::cout 输出溢出
- 为什么我的 cout 输出没有立即显示
- 在C++中格式化 Cout 输出
- 是否可以在C++中的文件中显示void函数cout输出
- 同步STD cout输出多线程
- 用visual studio和C++/OpenGL进行cout输出
- std::cout输出直到程序结束才打印
- 如何在非控制台应用程序中看到cout输出?
- 使用SDL时没有从cout输出
- 为什么std::cout输出在发送NULL后完全消失?