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読み取り領域のポインターを設定します。書き込みには影響しません。

最も簡単な解決策は、最初の呼び出しと 2 番目の呼び出しの 2 つの異なる and をstreambuf使用 することMemBufInです。双方向ストリームが必要な場合、またはシークをサポートする場合は、さらに複雑になります。MemBufOutsetgsetp

于 2013-07-25T09:47:07.327 に答える