首页 > 解决方案 > C++ std::streambuf::pubseekpos():检查是否支持随机访问

问题描述

在编写一个引用 an 的通用函数时std::streambuf,我想检查提供的缓冲区是否与支持随机访问的东西相关联并相应地优化处理,即检查是否pubseekpos()可以在流中移动。

我可能在文档中忽略了这一点。您是否碰巧有一个清晰的解决方案,而不是根据后一种方法的结果(-1在寻找失败的情况下返回,这可能有其他原因)的结果发现它是否有效?

可用文档:

提前致谢。问候。


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

即使我对此不是很高兴,你也有一个很好的观点。与“而不是在打开文件之前测试文件是否存在,而是打开它并处理 error_status/exceptions”相同(因为在测试和打开之间总是可能存在竞争条件)。

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

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

谢谢。问候。


标签: c++feature-detectionrandom-accessstreambuf

解决方案


推荐阅读