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

Why std::fstream returns void instead of bool

本文关键字:bool 返回 std fstream 为什么 void      更新时间:2023-10-16

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

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

失败时,设置故障位标志(可以使用成员进行检查) fail),并且根据设置的异常值,异常可能会 被扔掉。

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