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 个可能的位要设置:badbit
、failbit
和 eofbit
。 "default state" 是 std::ios_base::goodbit
(0)。所以只需 my_ifstream.exceptions(0)
将重置它(my_ifstream.exceptions(std::ios::goodbit)
也可以工作并且更清楚)。
有没有办法将 ios
对象的异常掩码重置为 "default" 值?
(它是由标准定义的吗?)
我最初对 ifstream
很感兴趣,后来 ios
追踪 ifstream
的继承。
我找到了解决方法 here,但这取决于是否已将对象掩码的原始状态存储在变量中,而这可能不可用。
exceptions
member functions is inherited from ios
. It is a std::ios_base::iostate
有 3 个可能的位要设置:badbit
、failbit
和 eofbit
。 "default state" 是 std::ios_base::goodbit
(0)。所以只需 my_ifstream.exceptions(0)
将重置它(my_ifstream.exceptions(std::ios::goodbit)
也可以工作并且更清楚)。