Bagaimanakah Anda Boleh Ubah Halakan STDOUT ke Fungsi Tersuai dalam C?

Linda Hamilton
Lepaskan: 2024-10-29 18:37:04
asal
922 orang telah melayarinya

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

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

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!

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!