提升iostreaming过滤器获取空值

时间:2013-07-25 09:09:09

标签: c++ boost-iostreams streambuf

我尝试构建一个流缓冲区,用于使用boost :: iostreams读取和编写char *:

class MemBuf : public std::streambuf
{
public:
  MemBuf(char* s, std::size_t n)
  {
      setg(s, s, (char*)s+ n);
  }
};

阅读工作正常:

char myreadBuff[100];
myreadBuff[0] = 'a';
MemBuf mb (myreadBuff, 100);
istream istr (&mb);
cout << istr; 

但是写作不起作用:

char mywriteBuff[100];
MemBuf mb(mywriteBuff, 100);
ostream ostr($mb);

ostr << "hello world";

cout << mywriteBuff;

缺少什么?

Thx

1 个答案:

答案 0 :(得分:1)

setg设置读取区域的指针;它没有影响 写入。

最简单的解决方案是使用两个不同的streambufMemBufInMemBufOut:第一次调用setg,然后调用setp 第二个{{1}}。如果你想要一个双向流,或者 支持寻求,它变得更加复杂。