C で出力を文字列にリダイレクトする方法
さまざまなデバッグおよびテストのシナリオでは、標準出力とエラーはコンソールではなく文字列にストリームされます。
解決策: std::stringstream を使用する
stdout/stderr を文字列にリダイレクトするには、std を利用できます。 ::stringstream class:
<code class="cpp">std::stringstream buffer; std::streambuf *old = std::cout.rdbuf(buffer.rdbuf()); std::cout << "Bla" << std::endl; std::string text = buffer.str(); // text will now contain "Bla\n"</code>
バッファ リセットのガード クラス
リダイレクト後にバッファが確実にリセットされるように、ガード クラスを作成できます:
<code class="cpp">struct cout_redirect { cout_redirect(std::streambuf *new_buffer) : old(std::cout.rdbuf(new_buffer)) {} ~cout_redirect() { std::cout.rdbuf(old); } private: std::streambuf *old; };</code>
このガード クラスは、例外が発生した場合でもバッファが常に元の状態に復元されることを保証します。
以上がC で文字列内の標準出力とエラー ストリームをキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。