Mengubah hala STDOUT kepada Pengendali Tersuai
Dalam aplikasi yang anda ingin menyesuaikan output yang biasanya ditujukan kepada aliran stdout, anda boleh mencari cara untuk mengubah hala ke tempat lain. Walaupun diketahui umum bahawa anda boleh mengubah hala stdio ke fail, mengapa tidak mempertimbangkan untuk mengubah hala ke fungsi definisi anda sendiri?
Memahami Output Standard C
Pertama, adalah penting untuk memahami bahawa stdout, bersama-sama dengan stderr dan stdin, mewakili aliran output yang dipratentukan untuk data yang tidak diformat. Fungsi printf, serta C iostream, menggunakan stdout untuk memaparkan output.
Mencapai Ubah hala melalui aliran ostring
Ubah hala ke fungsi tersuai sememangnya boleh dilaksanakan. Untuk aliran cout, cerr, dan clog, anda boleh mencapai ini dengan bantuan ostringstream tanpa perlu melaksanakan streambuf anda sendiri. Berikut ialah coretan kod sampel:
<code class="cpp">// Redirect cout. streambuf* oldCoutStreamBuf = cout.rdbuf(); ostringstream strCout; cout.rdbuf( strCout.rdbuf() ); // Output goes to the string stream. cout << "Hello, World!" << endl; // Restore original cout. cout.rdbuf( oldCoutStreamBuf ); // Retrieve content from the string stream. cout << strCout.str();</code>
Kaveat dan Kaedah Alternatif
Walaupun kaedah ini boleh mengubah hala keluaran cout, cerr dan clog, ia mungkin tidak berfungsi lancar untuk stdout dan stderr. printf, contohnya, tidak akan keluar ke fungsi tersuai.
Untuk saiz data yang lebih kecil, menggunakan freopen atau setbuf ialah pilihan yang berdaya maju. Walau bagaimanapun, untuk jumlah data yang lebih besar, adalah disyorkan untuk menggunakan mekanisme dup atau dup2 yang canggih, yang melibatkan pengalihan ke paip.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Ubah Halakan STDOUT ke Fungsi Tersuai dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!