Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah saya boleh mengubah hala STDOUT ke Fungsi Tersuai dalam 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!