從唯讀記憶體建立輸入流
您有一個由包含 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中文網其他相關文章!