Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menulis dengan Cekap kepada Penampan Tertentu Menggunakan Aliran Rentetan dalam C?

Bagaimanakah Saya Boleh Menulis dengan Cekap kepada Penampan Tertentu Menggunakan Aliran Rentetan dalam C?

Barbara Streisand
Lepaskan: 2024-11-26 08:02:08
asal
278 orang telah melayarinya

How Can I Efficiently Write to a Specific Buffer Using a Stringstream in C  ?

Mengkonfigurasi Strim untuk Menulis kepada Penimbal Tertentu

Apabila menulis data ke penimbal sedia ada menggunakan kelas aliran rentetan, adalah penting untuk mengelakkan penggunaan yang berlebihan meniru. Mekanisme lalai melibatkan penyalinan mesej daripada strim ke objek rentetan sementara, yang boleh menjadi tidak cekap.

Pendekatan Asal dan Hadnya

Pada mulanya, percubaan telah dibuat untuk menggunakan kaedah rdbuf()->pubsetbuf() untuk mengubah hala keluaran strim ke penimbal yang dikehendaki. Walau bagaimanapun, kaedah ini terbukti tidak berkesan dalam pelaksanaan Visual Studio 2008.

Pelaksanaan Streambuf Tersuai

Alternatif yang berdaya maju ialah mencipta kelas std::streambuf tersuai yang memulakannya petunjuk dalaman untuk merujuk kepada yang dibekalkan penimbal:

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

Kod Disemak Menggunakan Streambuf Tersuai

Menggunakan jenis ostreambuf tersuai, kod tersebut ditulis semula seperti berikut:

void FillBuffer(char* buffer, unsigned int size)
{
    ostreambuf<char> ostreamBuffer(buffer, size);
    std::ostream messageStream(&ostreamBuffer);

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

Kini, data ditulis terus ke penimbal luaran tanpa penyalinan yang tidak perlu. Pendekatan ini memberikan kecekapan dan fleksibiliti yang lebih besar apabila bekerja dengan penimbal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menulis dengan Cekap kepada Penampan Tertentu Menggunakan Aliran Rentetan 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