首页 > 后端开发 > C++ > 正文

如何用 C 语言从只读存储器创建输入流?

Susan Sarandon
发布: 2024-11-09 20:45:02
原创
543 人浏览过

How to Create an Input Stream from Read-Only Memory in C  ?

从只读内存创建输入流

您有一个由包含 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板