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

时间:2012-10-03 20:14:02

标签: c++

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

2 个答案:

答案 0 :(得分:2)

因为如果设置了异常,open调用不成功,或者使用failbit表示发生了错误,它会抛出异常。来自文档:

  

失败时,会设置failbit标志(可以使用成员检查)   失败),并且根据异常设置的值,异常可能   被抛出。

答案 1 :(得分:1)

我的理解是,当fstream允许你尝试读取(或者我也想写)任何类型的文件时,有很多方法会失败。根据情况和程序员,“失败”也可能是模棱两可的。鉴于此,我认为很难从布尔返回值中获得任何有意义的东西。