ホームページ > バックエンド開発 > C++ > stdout と stderr を C の文字列にリダイレクトできますか?

stdout と stderr を C の文字列にリダイレクトできますか?

Susan Sarandon
リリース: 2024-11-02 22:27:30
オリジナル
587 人が閲覧しました

Can you redirect stdout and stderr to a string in C  ?

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

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 までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート