小编EdS*_*lle的帖子

当我的自定义streambuf类使用时,istream :: tellg()返回-1?

我正在尝试创建一个istream直接从原始内存缓冲区读取的内容.

我在这里的另一篇文章中找到了一个很好的方法:

  class membuf : public basic_streambuf<char>
  {
  public:
      membuf(char* p, size_t n) {
          setg(p, p, p + n);
      }
  };
Run Code Online (Sandbox Code Playgroud)

然后我创建我istream使用这个membuf:

    membuf mb(dataPointer, dataLength);
    istream reader(&mb);
Run Code Online (Sandbox Code Playgroud)

然后我阅读使用getline()>>运算符,一切都很棒.但是,我似乎无法seekg()回退到缓冲区的开头,并且istream::tellg()总是返回-1.

我是否需要编写更多代码才能使这些代码发挥作用,或者这注定要失败?

c++ istream streambuf

5
推荐指数
1
解决办法
1256
查看次数

标签 统计

c++ ×1

istream ×1

streambuf ×1