C++ boost iostreaming筛选器获取空值

C++ boost iostreaming筛选器获取空值,c++,boost-iostreams,streambuf,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); istrea

我尝试使用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 myreadBuff[100];
myreadBuff[0]=“a”;
MemBuf mb(myreadBuff,100);
istream istr(&mb);

cout
setg
设置读取区域的指针;这对我没有影响 写作

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

试着冲洗你的小溪。
char mywriteBuff[100];
MemBuf mb(mywriteBuff, 100);
ostream ostr($mb);

ostr << "hello world";

cout << mywriteBuff;