Maison > Article > développement back-end > Comment puis-je créer un flux d’entrée à partir d’une mémoire immuable ?
Dans le développement de logiciels, il est souvent nécessaire de lire des données à partir de tampons de mémoire sans copier ni modifier leur contenu. Un de ces scénarios est celui où les données sont stockées dans un pointeur de caractère constant (const char*). Pour permettre une lecture pratique à partir de tels tampons, la création d'un flux d'entrée est une solution viable.
Un tampon de flux personnalisé peut faciliter la création d'un flux d'entrée à partir d'une mémoire immuable. Voici comment l'implémenter :
#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)) { } };
Le const_cast
Une fois le tampon de flux créé, vous pouvez l'utiliser pour initialiser un flux d'entrée et lisez les données du tampon :
imemstream in(data, size); int x; float y; std::string w; in >> x >> y >> w;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!