0

我尝试使用 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;

什么不见​​了?

谢谢

4

1 回答 1

1

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

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

于 2013-07-25T09:47:07.327 回答