我创建了一个派生自boost :: iostreams :: stream<的类。 boost :: iostreams :: array_source>为了使用>>提取二进制值操作
一切正常。我希望提供一个名为hasRoomFor(n)的布尔方法,以指示内部流缓冲区是否包含足够的字符以供下一个要提取的值。
但是我无法通过rdbuf()来做到这一点。虽然它返回一个有效的指针,但in_avail()总是返回0。
我检查了调试器和通常的istream`s beg,cur和end指针都是0。 但是我可以看到一个名为member(类型为stream_buffer)的属性,在该属性下我只看到beg和end的等价物。
我无法找到一种方法来了解缓冲区中当前指针的位置。有了这些信息可以帮助我确定剩余的空间。
我仍然可以计算我的类方法提取的字符,但如果用户直接调用istream方法(不是虚拟的),我会错过一些;因此不可靠。
有没有人知道如何实现这个目标?