C++ 设置 "blank" 或重置 ifstrean (ios) 的异常掩码

C++ set "blank" or reset exception mask of ifstrean (ios)

有没有办法将 ios 对象的异常掩码重置为 "default" 值? (它是由标准定义的吗?) 我最初对 ifstream 很感兴趣,后来 ios 追踪 ifstream 的继承。

我找到了解决方法 here,但这取决于是否已将对象掩码的原始状态存储在变量中,而这可能不可用。

exceptions member functions is inherited from ios. It is a std::ios_base::iostate 有 3 个可能的位要设置:badbitfailbiteofbit。 "default state" 是 std::ios_base::goodbit (0)。所以只需 my_ifstream.exceptions(0) 将重置它(my_ifstream.exceptions(std::ios::goodbit) 也可以工作并且更清楚)。