0

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

4

2 回答 2

2

因为open如果设置了异常,则在调用不成功时会抛出异常,或者它们用于failbit指示发生了错误。从文档中:

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

于 2012-10-03T20:14:54.770 回答
1

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

于 2012-10-03T20:28:42.353 回答