我有一个 C++ 应用程序,其中包含大量 std::cout
。它在 linux 2.6.x 上运行。我需要测试应用程序的性能,所以我正在考虑将 std::cout
重定向到 /dev/null
。在 C 中,我可以简单地使用 dup2
。在 C++ 中是否有将 std::ostream
重定向到文件或 /dev/null
的等效项?
最佳答案
dup2
技巧在 C++ 中仍然有效,因为就像 <stdio.h>
, <iostream>
只是 UNIX 系统调用之上的缓冲层。
您也可以在 C++ 级别通过断开缓冲区与 std::cout
的连接来执行此操作:
std::cout.rdbuf( NULL );
除了切断std::cout
之间的关系和任何实际的输出设备,这将设置 std::ios::badbit
防止任何输出转换(例如数字到文本)发生的标志。性能应该比使用文件系统级 hack 好得多。
关于c++ - 如何在 C++ 和 Linux 中将 std::ostream 重定向到文件或/dev/null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14845446/