为什么从C ++标准库中打开std :: fstream类的成员函数会返回void而不是bool来立即检查成功打开?
答案 0 :(得分:2)
因为如果设置了异常,open
调用不成功,或者使用failbit
表示发生了错误,它会抛出异常。来自文档:
失败时,会设置failbit标志(可以使用成员检查) 失败),并且根据异常设置的值,异常可能 被抛出。
答案 1 :(得分:1)
我的理解是,当fstream允许你尝试读取(或者我也想写)任何类型的文件时,有很多方法会失败。根据情况和程序员,“失败”也可能是模棱两可的。鉴于此,我认为很难从布尔返回值中获得任何有意义的东西。