在抽象的术语中,管道是具有破坏性读取的流/FIFO 样式容器。它有一种read()
方法可以一次复制所有数据块,并且功能类似于get
和put
用于单个字节。当read
orget
返回时,从管道复制的数据将从管道的内部缓冲区中删除 - 与文件或任何其他容器类型不同。
大多数(全部?)STL 容器不提供类似于read()
缓冲区命令的输入。是否有带有pop_many()
成员的 fifo 容器类型?
stringstream
是我能想到的最接近的事情,因为它维护一个内部读取指针,并且未来的读取将阻塞,直到流再次填满。从 API 的角度来看,容器是空的,但必须手动对消耗的数据进行垃圾收集。
C++ 中是否有一个等效的容器或流类可以做到这一点,或者它是你自己的问题(如在 stringstream 示例中)?