gpt4 book ai didi

C++如何检查流(iostream)是否可搜索

转载 作者:太空狗 更新时间:2023-10-29 20:45:52 24 4
gpt4 key购买 nike

有没有办法检查 ostream 的 istream 是否可搜索?

我怀疑做一个测试搜索和检查 failbit 是不正确的因为搜索可能会因不相关的原因而失败。

我需要它在 Linux 和 mac 上工作,如果这有区别的话。

最佳答案

Iostreams 给你的不多。 Stream 对象只是从类 std::streambuf 派生的缓冲区对象的包装器。 (假设“窄”字符。)标准派生缓冲区类是用于字符串的 std::stringbuf 和用于文件的 std::filebuf。假设您只对文件感兴趣,std::filebuf 只是 C 库功能的简单包装器。 C 库没有定义一种方法来确定 FILE 对象是否支持查找,除了尝试这样做,所以 C++ 也没有。

就其值(value)而言,seek 的语义略有不同。某些平台可能允许您“寻找”管道,但仅限于当前位置,以确定已读取或写入了多少个字符。搜索结束可能会调整文件大小,或者可能导致下一个写入操作调整文件大小,或者介于两者之间。

您也可以尝试检查 errno 是否设置了 badbit(或者,我更喜欢使用异常而不是标志)。

关于C++如何检查流(iostream)是否可搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9451005/

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