我试图建立一个用于使用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;


缺什么?

谢谢

最佳答案

setg设置读取区域的指针;对...没有影响
写作。

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

08-27 22:10