Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengubah hala Output Standard ke Fungsi dalam C?
Mengubah hala Output Standard dalam C
Dalam C , strim output standard (stdout) biasanya menghantar data ke konsol. Walau bagaimanapun, terdapat situasi di mana anda mungkin mahu mengubah hala output ini kepada fungsi tersuai untuk pemprosesan.
Mengubah hala ke Fungsi Menggunakan ostringstream
Satu pendekatan untuk mengubah hala stdout ke fungsi adalah untuk menggunakan aliran ostring. Ini ialah penimbal strim berasaskan memori yang pada asasnya menangkap output mana-mana strim yang diarahkan kepadanya.
<code class="cpp">// Declare a new ostringstream ostringstream strCout; // Redirect cout to the ostringstream cout.rdbuf(strCout.rdbuf()); // Write to the ostringstream cout << "test" << endl; // Restore the original cout stream cout.rdbuf(oldCoutStreamBuf);</code>
Kini, objek strCout mengandungi output yang akan pergi ke stdout. Anda kemudiannya boleh menghantar output ini kepada fungsi tersuai anda untuk pemprosesan selanjutnya.
<code class="cpp">void MyHandler(const char* data) { // Process the data from strCout.str() } MyHandler(strCout.str().c_str());</code>
Mengubah hala ke Fungsi Menggunakan Panggilan Sistem
Pendekatan lain ialah menggunakan panggilan sistem seperti freopen() atau setbuf() untuk mengubah hala stdout ke paip. Ini membolehkan anda menangkap output dalam proses atau benang yang berasingan.
<code class="cpp">// Open a file stream to a named pipe FILE* pipe = fopen("my_pipe", "w"); // Redirect stdout to the pipe setbuf(stdout, pipe); // Write to stdout printf("test"); // Close the pipe fclose(pipe);</code>
Output daripada printf kini akan ditulis pada paip. Anda kemudiannya boleh membuat proses atau benang yang berasingan untuk membaca daripada paip dan melaksanakan pemprosesan yang anda inginkan.
Penghadan
Perhatikan bahawa mengubah hala stdout menggunakan ostringstream hanya mempengaruhi output daripada cout. Strim lain seperti printf atau stderr mungkin masih keluar ke konsol. Untuk ubah hala yang lengkap, pertimbangkan untuk menggunakan pendekatan panggilan sistem atau melaksanakan streambuf tersuai.
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengubah hala Output Standard ke Fungsi dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!