繁体   English   中英

为什么std :: fstream返回void而不是bool

[英]Why std::fstream returns void instead of bool

为什么C ++标准库中std :: fstream类的成员函数open返回void而不是bool以便立即检查是否成功打开?

因为如果设置了异常,则在open调用失败时会引发异常,否则它们将使用failbit指示发生了错误。 从文档中:

失败时,将设置failbit标志(可以通过成员fail进行检查),并且根据设置的异常值,可能会引发异常。

我的理解是,当fstream允许您尝试读取(或我也想写)任何类型的文件时,fstream可能有很多失败的方式。 同样,“失败”也可能是模棱两可的,具体取决于情况和程序员。 鉴于此,我认为很难从布尔返回值中获取有意义的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM