Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh mencipta aliran input daripada memori tidak berubah?
Dalam pembangunan perisian, selalunya perlu membaca data daripada penimbal memori tanpa menyalin atau mengubah kandungannya. Satu senario sedemikian ialah apabila data disimpan dalam penunjuk aksara malar (const char*). Untuk mendayakan pembacaan mudah daripada penimbal sedemikian, mencipta strim input ialah penyelesaian yang berdaya maju.
Penimbal strim tersuai boleh memudahkan penciptaan strim input daripada memori yang tidak boleh diubah. Begini cara untuk melaksanakannya:
#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)) { } };
Const_cast
Setelah penimbal strim dicipta, anda boleh menggunakannya untuk memulakan strim input dan baca data daripada penimbal:
imemstream in(data, size); int x; float y; std::string w; in >> x >> y >> w;
Atas ialah kandungan terperinci Bagaimanakah saya boleh mencipta aliran input daripada memori tidak berubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!