编程忽略计数

Programmatically Ignore Cout

本文关键字:编程      更新时间:2023-10-16

有没有人知道是否有一个技巧来切换所有的cout <<函数不打印出可见的输出?我正试图把我和其他人写的一些代码拼凑在一起,来做一个演示。我宁愿不把输出重定向到一个文件,而希望有一个解决方案,在Windows和Linux之间有某种程度的兼容性。

在我的场景中,当某些方法产生调试输出时,我有许多行带有各种#defines控制的代码。我想调用如下内容:

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

你可以改变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";

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

如果只是为了避免在演示的终端上输入复杂的shell表达式,我建议编写一个启动脚本并在其中进行重定向。

那,或者重新打开stdout到/dev/null附近的顶部。