Bagaimanakah saya boleh mengubah hala STDOUT ke Fungsi Tersuai dalam C?

Susan Sarandon
Lepaskan: 2024-11-01 01:02:03
asal
933 orang telah melayarinya

How Can I Redirect STDOUT to a Custom Function in C  ?

Mengubah hala STDOUT dalam C

Mereka semula aliran keluaran dalam pengaturcaraan selalunya diperlukan untuk menampung keperluan aplikasi tertentu. Artikel ini menangani pertanyaan untuk mengubah hala output yang ditakdirkan untuk STDOUT kepada fungsi tersuai, menyelidiki mekanisme asas yang terlibat dan menyediakan penyelesaian praktikal.

Teknik Ubah Arah

Walaupun pengetahuan umum tentang mengalihkan STDOUT ke fail, konsep pengalihan ke fungsi adalah sama dilaksanakan. Teknik ini menggunakan fungsi yang ditetapkan, MyHandler, untuk menerima dan memproses data yang sebaliknya akan dihantar ke STDOUT.

Pelaksanaan

Pelaksanaan berkisar pada pengalihan aliran cout dan cerr kepada aliran rentetan (ostringstream). Berikut ialah contoh ringkas:

<code class="cpp">// Redirect cout
streambuf* oldCoutStreamBuf = cout.rdbuf();
ostringstream strCout;
cout.rdbuf(strCout.rdbuf());

// Custom function
void MyHandler(const char* data) {}

// Output to the string stream
cout << "Hello, World!" << endl;

// Restore original cout
cout.rdbuf(oldCoutStreamBuf);

// Display the collected output from the string stream
cout << strCout.str();</code>
Salin selepas log masuk

Malangnya, kaedah ini hanya mengubah hala data yang ditujukan khusus untuk cout, bukan keseluruhan output yang ditakdirkan untuk STDOUT. Contohnya, output printf tidak akan diubah hala.

Pilihan Tambahan

Untuk mencapai pengalihan keluaran yang lebih komprehensif, pertimbangkan untuk menggunakan teknik seperti freopen, setbuf atau dup dan dup2 panggilan sistem. Ambil perhatian bahawa walaupun kaedah ini membenarkan pengalihan keluaran STDOUT, kaedah ini mempunyai had tertentu dan mungkin tidak sesuai untuk semua senario.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengubah hala STDOUT ke Fungsi Tersuai 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!