Heim > Artikel > Backend-Entwicklung > Wie kann ich einen Eingabestream aus unveränderlichem Speicher erstellen?
In der Softwareentwicklung ist es oft notwendig, Daten aus Speicherpuffern zu lesen, ohne deren Inhalte zu kopieren oder zu ändern. Ein solches Szenario ist, wenn die Daten in einem konstanten Zeichenzeiger (const char*) gespeichert werden. Um das bequeme Lesen aus solchen Puffern zu ermöglichen, ist die Erstellung eines Eingabestreams eine praktikable Lösung.
Ein benutzerdefinierter Stream-Puffer kann die Erstellung eines Eingabestreams aus unveränderlichem Speicher erleichtern. So implementieren Sie es:
#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)) { } };
Der const_cast
Sobald der Stream-Puffer erstellt wurde, können Sie ihn zum Initialisieren eines Eingabestreams verwenden und Daten aus dem Puffer lesen:
imemstream in(data, size); int x; float y; std::string w; in >> x >> y >> w;
Das obige ist der detaillierte Inhalt vonWie kann ich einen Eingabestream aus unveränderlichem Speicher erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!