C ++ Boost io流,错误处理

时间:2009-07-20 11:03:55

标签: c++ boost error-handling iostream boost-iostreams

是否可以使自定义流像stanadrd一样处理错误?默认情况下使用good / fail / bad / eof位而不是异常?

boost文档只提到为流错误抛出std ::失败并让其他错误传播(例如,尝试分配缓冲区的badalloc),但是boost代码似乎没有抓住这些,而是​​依赖于用户用于处理它们的代码,但是我的所有现有代码都依赖于good(),bad()等方法和clear()方法,如果它需要在发生错误后再次尝试。

1 个答案:

答案 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