istream
生メモリ バッファから直接読み取るを作成しようとしています。
ここの別の投稿でこれを行う良い方法を見つけました:
class membuf : public basic_streambuf<char>
{
public:
membuf(char* p, size_t n) {
setg(p, p, p + n);
}
};
次に、istream
これを使用して作成しますmembuf
:
membuf mb(dataPointer, dataLength);
istream reader(&mb);
getline()
次に、 and>>
演算子の使用を読みましたが、すべてが素晴らしいものでした。seekg()
ただし、バッファの先頭に巻き戻すために使用できないようで、istream::tellg()
常に を返します-1
。
これらを機能させるには、さらにコードを書く必要がありますか、それとも失敗する運命にありますか?