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

出力をリダイレクトしたくないのはなぜですか?保持したい出力がにある場合は、うまくいかない可能性があります。

デモの端末で複雑なシェル式を入力する必要がないようにするためだけであれば、開始スクリプトを作成し、内部でリダイレクトを行うことをお勧めします。

/dev/nullそれ、またはメインの上部近くのどこかにstdout を再度開きます。

于 2011-10-11T03:21:43.383 に答える