问题描述
在编写引用 std::streambuf
的通用函数时,我想检查提供的缓冲区是否与支持随机访问的内容相关联并相应地优化处理,即检查是否在带有 pubseekpos()
的流是否可用。
我可能在文档中忽略了这一点。除了根据后一种方法的结果发现它是否有效之外,您是否碰巧有一个非常清晰的解决方案(如果搜索失败,则返回 -1
,这可能有其他原因)?
可用文档:
- https://www.cplusplus.com/reference/streambuf/streambuf/pubseekpos/
- https://en.cppreference.com/w/cpp/io/basic_streambuf/pubseekpos
提前致谢。问候。
(在第一条评论后编辑#GIJD)
即使我对此并不感到高兴,您也说得很好。与“而不是在打开文件之前测试文件是否存在,打开它并处理 error_status/exceptions”相同(因为在测试和打开之间总是可能出现竞争条件)。
好的,实际的函数调用本身可能确实是某些功能标志存在测试的最佳证明(也可能设置错误,即使代码经过适当测试也不太可能......好吧,我只是阅读了我写,是的,好吧,好像代码总是经过适当的测试......好吧哈哈,最好直接测试功能是的)。
但是,-1 返回值仍然可能意味着错误,而不是缺少随机访问,但有人可能会争辩说结果是相同的,如果它失败无论出于何种原因,我将无法进行随机访问,功能缺乏或一些错误。因此,无论如何我将不得不退回到单遍流读取。
谢谢。问候。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)