2012-10-03 43 views
0

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

+0

返回bool不一定是明显的含义:它可能意味着“如果错误发生,则返回true”以及“如果成功则返回true”。有不同的设计选择。没有办法让.isGood()或isBad()错误。 – stefan

回答

2

因为如果设置了例外情况,open调用不成功,或者它们使用failbit来指示发生错误,它会抛出异常。从文档:

失败时,failbit标志被设置(其可以与构件 失败进行检查),并根据与异常设置例外值可以 被抛出。

+2

只有在例外情况发生时才会抛出 – FrozenHeart

+0

感谢您的评论。添加到答案的澄清。 –

1

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

相关问题