Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么 C++ 标准库中 std::fstream 类的成员函数 open 返回 void 而不是 bool 以立即检查是否成功打开?
因为open如果设置了异常,则在调用不成功时会抛出异常,或者它们用于failbit指示发生了错误。从文档中:
open
failbit
失败时,会设置 failbit 标志(可以使用成员 fail 进行检查),并且根据设置有异常的值,可能会引发异常。
我的理解是,当 fstream 允许您尝试读取(或者我想也可以写入)任何类型的文件时,fstream 可能会失败的方式有很多。根据情况和程序员的不同,“失败”也可能是模棱两可的。鉴于此,我认为很难从布尔返回值中得到任何有意义的东西。