【发布时间】:2014-08-09 19:57:26
【问题描述】:
好吧,我现在很困惑;什么时候有人会在流上使用流缓冲区 - 或其他方式?
阅读cppreference 和一些与此相关的在线主题只会增加混乱。对我来说,std::basic_istream 似乎是缓冲区的“抽象”。这样就不必处理本地化等问题了。
但是在读取文件数据时仍然需要这样做——那么它实际上抽象出了什么?
另一方面,std::basic_streambuf 带来了什么?
然后是std::istream_iterator 和std::istreambuf_iterator。两者都从“流”中读取元素。这增加了更多的困惑:上面的迭代器有什么不同吗?
PS:在这里使用istream,但当然也可以是ostream 或其他任何东西。
PPS:我应该补充一点,在谷歌搜索 this stackoverflow question 等示例时添加了混淆
【问题讨论】:
-
流缓冲区(如果流用于缓冲输入/输出)。换句话说,流对象使用缓冲区对象。您不应该直接使用缓冲区对象。
-
您想要使用
streambuf的一种情况是在实现您自己的 iostream 派生类时。