Rumah > pembangunan bahagian belakang > C++ > Bolehkah anda mengalihkan stdout dan stderr ke rentetan dalam C ?

Bolehkah anda mengalihkan stdout dan stderr ke rentetan dalam C ?

Susan Sarandon
Lepaskan: 2024-11-02 22:27:30
asal
585 orang telah melayarinya

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

Mengubah hala stdout/stderr ke String

Mengubah hala stdout dan stderr ke fail adalah tugas biasa, tetapi boleh output kepada rentetan dicapai ?

Jawapan:

Ya, adalah mungkin untuk mengubah hala stdout dan stderr ke 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>
Salin selepas log masuk

Untuk memastikan penimbal sentiasa ditetapkan semula, kelas pengawal boleh digunakan:

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Bolehkah anda mengalihkan stdout dan stderr ke rentetan dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan