Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mengalihkan stdout/stderr ke String dalam C ?

Bagaimana untuk Mengalihkan stdout/stderr ke String dalam C ?

Mary-Kate Olsen
Lepaskan: 2024-11-03 03:43:02
asal
497 orang telah melayarinya

How to Redirect stdout/stderr to a String in C  ?

Mengubah hala stdout/stderr ke String dalam C

Walaupun terdapat banyak perbincangan tentang mengalihkan stdout/stderr ke fail, ia juga mungkin untuk mengubah hala output ini kepada rentetan. Artikel ini meneroka cara untuk mencapai ini dengan bantuan std::stringstream dan kelas pengawal.

Jawapan:

Untuk mengubah hala stdout/stderr ke rentetan, anda boleh menggunakan std::stringstream. Begini caranya:

1

2

3

4

5

6

<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 now contains "Bla\n"</code>

Salin selepas log masuk

Kaedah ini menangkap output konsol ke dalam rentetan.

Untuk memastikan pembersihan yang betul, anda boleh menggunakan kelas pengawal:

1

2

3

4

5

6

7

8

9

10

11

12

<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

Dengan menggunakan pengawal ini, anda boleh yakin bahawa penimbal sentiasa ditetapkan semula, memastikan pengendalian I/O konsol yang betul.

Atas ialah kandungan terperinci Bagaimana untuk Mengalihkan stdout/stderr ke String 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