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
Lepaskan: 2024-10-31 09:35:02
asal
709 orang telah melayarinya

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

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

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

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!

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