10

有谁知道是否有一个技巧可以切换所有cout <<功能以不打印出可见输出?我正在尝试将我和其他一些人编写的一些代码组合在一起来制作一个演示。我宁愿不将输出重定向到文件,并且想要一个在 Windows 和 Linux 之间具有一定兼容性的解决方案。

#defines在我的场景中,当某些方法产生调试输出时,我有许多带有各种控制的代码行。我想这样称呼:

cout.off();
driverForAffectA();
driverForAffectB();
cout.on();
printSpecializedDebug();
exit(0);
4

2 回答 2

18

您可以更改 cout 的流缓冲区。

streambuf *old = cout.rdbuf();
cout.rdbuf(0);
cout << "Hidden text!\n";
cout.rdbuf(old);
cout << "Visible text!\n";

编辑:

感谢 John Flatness 的评论,您可以稍微缩短代码:

streambuf *old = cout.rdbuf(0);
cout << "Hidden text!\n";
cout.rdbuf(old);
cout << "Visible text!\n";
于 2011-10-11T03:21:09.703 回答
1

为什么您不想重定向输出?如果是因为您希望保留其他输出,那么您可能不走运。

如果只是为了在演示中不必在终端上键入复杂的 shell 表达式,我建议制作一个启动脚本并在里面进行重定向。

那,或者将标准输出重新打开到/dev/nullmain 顶部附近的某个地方。

于 2011-10-11T03:21:43.383 回答