从只读内存创建输入流
您有一个由包含 ASCII 字符串的 const char* 指针指向的数据缓冲区。您希望像流一样读取数据,而不复制或更改它。
解决方案
要实现此目的,您可以创建自定义流缓冲区。具体方法如下:
#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)) {} };
membuf 类包含从 const char* 指针读取的流缓冲区。 imemstream 类继承自 membuf 并添加必要的功能以使其成为输入流。
要使用 imemstream,您可以实例化它并像这样使用它:
imemstream in(data, size); in >> value;
这将读取来自缓冲区的数据就好像它是一个流一样,而不修改它。
以上是如何用 C 语言从只读存储器创建输入流?的详细内容。更多信息请关注PHP中文网其他相关文章!