C++标准说($ 27.6.3.4.2)两个std::basic_streambuf::seekoff和的效果std::basic_streambuf::seekpos是分别为每个类派生的std::streambuf.但是如何std::istream/ std::ostream工作呢?后两个类的接口的定义至少有关于pubseekoff/ pubseekposmean 的参数的几个假设.
似乎没有澄清部分std::basic_streambuf,std::basic_streambuf即使它们支持任意搜索,也不是所有实现接口的子类都可以与流一起使用.例如,根据当前规范,子类可以说在MyStreamBuf::seekoff参数which = ios_base::inond中分别which = ios_base::out控制输出和输入序列(注意:反转).我认为除了通常的"支持"和"不支持"之外,特定的搜索操作可以被指定为"支持但具有不同的接口",这是非常反直觉的.或者这是标准的意图?
寻求非常有限.关于所有你可以肯定的工作是在任何流是寻求到流的开始,寻求到最后,或寻求你从一个位置tell.如果流是双向的,则每次更改方向时都必须寻找.
如果您对该流有更多了解,您可以做更多; stringstream例如,在a上
,您可以在任何地方寻找,并且在输入上搜索不会影响输出中的位置,反之亦然.在a上fstream,语义还取决于流是以文本模式还是以二进制形式打开,也可能是在流后面的实际文件中ifstream打开:如果它是在"/ dev/tty"(Unix)或"CONS"上打开的( Windows),然后你可能根本找不到(但如果你尝试可能不会出错).
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |