有没有办法可以检查ostream的istream是否可以搜索?
我怀疑进行测试搜索并检查failbit是不正确的,因为搜索可能因为无关的原因而失败.
我需要这个在Linux和Mac上工作,如果这有所作为.
Iostreams不会给你太多.Stream对象只是从类派生的缓冲区对象周围的包装器std::streambuf.(假设"窄"字符.)标准派生缓冲区类std::stringbuf用于字符串和std::filebuf文件.假设您只对文件感兴趣,std::filebuf它只是C库功能的简单包装器.FILE除了尝试这样做之外,C库没有定义一种确定对象是否支持搜索的方法,所以C++也没有.
对于它的价值,语义seek有所不同.某些平台可能允许您"搜索"管道但仅限于当前位置,以确定已读取或写入的字符数.寻找结束可能会调整文件大小,或者可能导致下一个写操作调整文件大小,或者介于两者之间.
您也可以尝试检查errno是否badbit已设置(或者,我更喜欢使用异常而不是标志).