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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 22:27:30534ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。