Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mengubah hala Output Standard ke Fungsi dalam C?

Bagaimanakah saya boleh mengubah hala Output Standard ke Fungsi dalam C?

Susan Sarandon
Susan Sarandonasal
2024-10-31 09:35:02703semak imbas

How Can I Redirect Standard Output to a Function in 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!

Kenyataan:
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