Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mengalihkan stdout/stderr ke String dalam 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:
<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>
Kaedah ini menangkap output konsol ke dalam rentetan.
Untuk memastikan pembersihan yang betul, anda boleh menggunakan kelas pengawal:
<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>
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!