在boost&lt; stream_source> </array_source>中获取余下的空间

时间:2014-03-14 02:33:25

标签: c++ boost

我创建了一个派生自boost :: iostreams :: stream&lt;的类。 boost :: iostreams :: array_source&gt;为了使用&gt;&gt;提取二进制值操作

一切正常。我希望提供一个名为hasRoomFor(n)的布尔方法,以指示内部流缓冲区是否包含足够的字符以供下一个要提取的值。

但是我无法通过rdbuf()来做到这一点。虽然它返回一个有效的指针,但in_avail()总是返回0。

我检查了调试器和通常的istream`s beg,cur和end指针都是0。 但是我可以看到一个名为member(类型为stream_buffer)的属性,在该属性下我只看到beg和end的等价物。

我无法找到一种方法来了解缓冲区中当前指针的位置。有了这些信息可以帮助我确定剩余的空间。

我仍然可以计算我的类方法提取的字符,但如果用户直接调用istream方法(不是虚拟的),我会错过一些;因此不可靠。

有没有人知道如何实现这个目标?

0 个答案:

没有答案