首頁  >  文章  >  後端開發  >  如何用 C 語言從唯讀記憶體建立輸入流?

如何用 C 語言從唯讀記憶體建立輸入流?

Susan Sarandon
Susan Sarandon原創
2024-11-09 20:45:02564瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn