在軟體開發中,通常需要從記憶體緩衝區讀取資料而不複製或更改其內容。其中一種情況是資料儲存在常數字元指標 (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)) { } };
const_cast
一旦建立了流緩衝區,就可以使用它來初始化輸入流並從緩衝區讀取資料:
imemstream in(data, size); int x; float y; std::string w; in >> x >> y >> w;
以上是如何從不可變記憶體建立輸入流?的詳細內容。更多資訊請關注PHP中文網其他相關文章!