Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menulis dengan Cekap kepada Penampan Pra-Peruntukan Menggunakan C Standard Streams?

Bagaimanakah Saya Boleh Menulis dengan Cekap kepada Penampan Pra-Peruntukan Menggunakan C Standard Streams?

Patricia Arquette
Lepaskan: 2024-11-28 09:36:11
asal
767 orang telah melayarinya

How Can I Efficiently Write to a Pre-Allocated Buffer Using C   Standard Streams?

Menetapkan Penampan Dalaman untuk Strim Standard Menggunakan pubsetbuf

Masalah:

Dalam percubaan untuk tulis data ke penimbal sedia ada menggunakan aliran rentetan, pengaturcara pada mulanya menggunakan salinan untuk memindahkan kandungan aliran ke penimbal, berhasrat untuk mengelakkan penyalinan data yang berlebihan. Selepas itu, mereka mencuba streambuf::pubsetbuf() untuk mencapai ini, tetapi mendapati ia tidak mengubah suai penimbal di bawah pelaksanaan perpustakaan standard Visual Studio 2008 C.

Jawapan:

Setelah siasatan lanjut, ternyata kaedah pubsetbuf dalam pelaksanaan perpustakaan yang diberikan pada dasarnya adalah tanpa operasi. Untuk mengkonfigurasi strim untuk menulis kepada penimbal tertentu, menggunakan kelas std::streambuf tersuai disyorkan:

template <typename char_type>
struct ostreambuf : public std::basic_streambuf<char_type, std::char_traits<char_type>> {
    ostreambuf(char_type* buffer, std::streamsize bufferLength) {
        setp(buffer, buffer + bufferLength);
    }
};
Salin selepas log masuk

Penimbal strim tersuai ini memulakan bahagian dalamannya untuk merujuk penimbal yang disediakan. Untuk menggunakannya:

ostreambuf<char> ostreamBuffer(buffer, size);
std::ostream messageStream(&ostreamBuffer);

messageStream << "Hello" << std::endl;
messageStream << "World!" << std::endl;
Salin selepas log masuk

Pendekatan ini membenarkan penulisan terus ke penimbal luaran menggunakan perpustakaan IOStream dan std::ostream, mengelakkan penyalinan yang tidak perlu yang terlibat dalam kaedah penyalinan awal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menulis dengan Cekap kepada Penampan Pra-Peruntukan Menggunakan C Standard Streams?. 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