標準出力 (stdout) と標準エラー (stderr) を C の文字列にリダイレクトできますか?

Barbara Streisand
リリース: 2024-11-02 22:14:30
オリジナル
448 人が閲覧しました

Can You Redirect Standard Output (stdout) and Standard Error (stderr) to a String in C  ?

stdout/stderr を文字列にリダイレクトする

stdout/stderr をファイルにリダイレクトすることを中心に多くの議論が行われてきました。ただし、この出力を文字列にリダイレクトすることは可能ですか?

解決策

はい、std::stringstream オブジェクトへのリダイレクトは可能です:

<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>
ログイン後にコピー

以上が標準出力 (stdout) と標準エラー (stderr) を C の文字列にリダイレクトできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!