有没有人知道是否有一个技巧可以切换所有cout <<
函数以不打印出可见输出?我试图将我和其他人编写的一些代码组合起来组合一个演示。我宁愿不将输出重定向到一个文件,并且想要一个在Windows和Linux之间具有一定程度兼容性的解决方案。
在我的场景中,我有许多代码行,当某些方法生成调试输出时,各种#defines
控制。我想打电话给:
cout.off();
driverForAffectA();
driverForAffectB();
cout.on();
printSpecializedDebug();
exit(0);
答案 0 :(得分:16)
您可以更改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";
答案 1 :(得分:1)
为什么您不想重定向输出?如果是因为你希望保留其他输出,那么你可能会失去运气。
如果它只是这样您不必在演示中的终端上键入复杂的shell表达式,我建议创建一个启动脚本并在内部进行重定向。
那,或者在主要顶部附近的某个地方重新开启stdout到/dev/null
。