首頁 > 後端開發 > C++ > 主體

如何從不可變記憶體建立輸入流?

Susan Sarandon
發布: 2024-11-09 04:47:01
原創
518 人瀏覽過

How can I create an input stream from immutable memory?

從不可變記憶體構造輸入流

在軟體開發中,通常需要從記憶體緩衝區讀取資料而不複製或更改其內容。其中一種情況是資料儲存在常數字元指標 (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>流緩衝區中的() 是必要的,因為流緩衝區不會修改數據,但介面需要一個char 。

一旦建立了流緩衝區,就可以使用它來初始化輸入流並從緩衝區讀取資料:

imemstream in(data, size);
int x;
float y;
std::string w;
in >> x >> y >> w;
登入後複製

以上是如何從不可變記憶體建立輸入流?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板