Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mencipta Strim Input daripada Memori Baca Sahaja dalam C?
Membuat Strim Input daripada Memori Baca Sahaja
Anda mempunyai penimbal data yang ditunjuk oleh penunjuk const char* yang mengandungi rentetan ASCII . Anda mahu membaca data seolah-olah ia adalah strim, tanpa menyalin atau mengubahnya.
Penyelesaian
Untuk mencapai ini, anda boleh membuat penimbal strim tersuai. Begini caranya:
#include <streambuf> #include <istream> struct membuf: std::streambuf { membuf(char const* base, size_t size) { char* p(const_cast<char*>(base)); this->setg(p, p, p + size); } }; struct imemstream: virtual membuf, std::istream { imemstream(char const* base, size_t size) : membuf(base, size), std::istream(static_cast<std::streambuf*>(this)) {} };
Kelas membuf mengandungi penimbal strim yang berbunyi daripada penunjuk const char*. Kelas imemstream mewarisi daripada membuf dan menambahkan fungsi yang diperlukan untuk menjadikannya strim input.
Untuk menggunakan imemstream, anda boleh membuat instantiat dan menggunakannya seperti ini:
imemstream in(data, size); in >> value;
Ini akan dibaca data daripada penimbal seolah-olah ia adalah aliran, tanpa mengubah suainya.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Strim Input daripada Memori Baca Sahaja dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!