Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh mengubah hala STDOUT ke Fungsi Tersuai dalam C?

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

Susan Sarandon
Susan Sarandonasal
2024-11-01 01:02:03938semak imbas

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>

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!

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