読み取り専用メモリからの入力ストリームの作成
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 中国語 Web サイトの他の関連記事を参照してください。