微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++ std::streambuf::pubseekpos():检查是否支持随机访问

如何解决C++ std::streambuf::pubseekpos():检查是否支持随机访问

在编写引用 std::streambuf 的通用函数时,我想检查提供的缓冲区是否与支持随机访问的内容相关联并相应地优化处理,即检查是否在带有 pubseekpos() 的流是否可用。

我可能在文档中忽略了这一点。除了根据后一种方法的结果发现它是否有效之外,您是否碰巧有一个非常清晰的解决方案(如果搜索失败,则返回 -1,这可能有其他原因)?

可用文档:

提前致谢。问候。


(在第一条评论后编辑#GIJD)

即使我对此并不感到高兴,您也说得很好。与“而不是在打开文件之前测试文件是否存在,打开它并处理 error_status/exceptions”相同(因为在测试和打开之间总是可能出现竞争条件)。

好的,实际的函数调用本身可能确实是某些功能标志存在测试的最佳证明(也可能设置错误,即使代码经过适当测试也不太可能......好吧,我只是阅读了我写,是的,好吧,好像代码总是经过适当的测试......好吧哈哈,最好直接测试功能是的)。

但是,-1 返回值仍然可能意味着错误,而不是缺少随机访问,但有人可能会争辩说结果是相同的,如果它失败无论出于何种原因,我将无法进行随机访问,功能缺乏或一些错误。因此,无论如何我将不得不退回到单遍流读取。

谢谢。问候。


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。