Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menulis dengan Cekap kepada Penampan Tertentu Menggunakan Aliran Rentetan dalam 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); } };
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; }
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!