是否可以使自定义流像stanadrd一样处理错误?默认情况下使用good / fail / bad / eof位而不是异常?
boost文档只提到为流错误抛出std ::失败并让其他错误传播(例如,尝试分配缓冲区的badalloc),但是boost代码似乎没有抓住这些,而是依赖于用户用于处理它们的代码,但是我的所有现有代码都依赖于good(),bad()等方法和clear()方法,如果它需要在发生错误后再次尝试。
答案 0 :(得分:1)
来自http://www.trip.net/~bobwb/cppnotes/lec08.htm
可以使用以下方法设置错误状态:
void clear(iostate = 0);
默认值为零会导致设置ios_base :: goodbit。
清晰();
因此等同于
清晰(0);
相当于
清晰(的ios_base :: goodbit);
请注意,ios_base :: goodbit是一个非零值。 clear()可用于将其他位之一设置为程序员代码的一部分,用于特定对象的运算符>>()。例如:
if(bad_char)is.clear(ios_base :: badbit); //设置istream的badbit