gpt4 book ai didi

c++ - 在 C++ 标准中未指定的 std::basic_streambuf 中寻找吗?

转载 作者:行者123 更新时间:2023-11-30 01:27:28 25 4
gpt4 key购买 nike

C++ 标准说 ($27.6.3.4.2) std::basic_streambuf::seekoffstd::basic_streambuf::seekpos 的效果都定义了分别为派生自 std::streambuf 的每个类。但是 std::istream/std::ostream 如何工作呢?后两个类的接口(interface)定义有几个假设,至少关于 pubseekoff/pubseekpos 的参数是什么意思。

似乎在 std::basic_streambuf 方面没有澄清,并非所有实现 std::basic_streambuf 接口(interface)的子类都可以与流一起使用,即使他们支持任意寻求。例如,根据当前规范,子类可以说在 MyStreamBuf::seekoff 中参数 which = ios_base::inwhich = ios_base::out 分别控制输出和输入顺序(注意:颠倒)。我认为除了通常的“支持”和“不支持”之外,还可以将特定的搜索操作指定为“支持,但具有不同的界面”,这是非常违反直觉的。或者这是标准的意图?

最佳答案

寻求是非常有限的。您可以确定的几乎所有内容都适用于任何stream 是寻找到流的开头,寻找到结尾,或者寻求从 tell 获得的位置。如果流是双向,每次改变方向时都必须寻找。

如果你对stream了解的多一些,或许你能做的更多;在一个stringstream,例如,你几乎可以在任何地方搜索,并且在输入上寻找不影响输出中的位置,反之亦然反之亦然。在 fstream 上,语义还取决于流是否以文本模式或二进制模式打开,并且可能在实际文件中打开在流后面:如果它是在 `"/dev/tty"(Unix) 上打开的 ifstream 或者“CONS”(Windows),那么你可能根本无法寻找(但可能无法获得如果你尝试一个错误)。

关于c++ - 在 C++ 标准中未指定的 std::basic_streambuf 中寻找吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8896303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com