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。
これらを機能させるには、さらにコードを書く必要がありますか、それとも失敗する運命にありますか?