ソフトウェア開発では、内容をコピーしたり変更したりせずにメモリ バッファからデータを読み取ることが必要になることがよくあります。そのようなシナリオの 1 つは、データが定数文字ポインター (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 中国語 Web サイトの他の関連記事を参照してください。