2009-07-20 3 views
3

Возможно ли создание пользовательской потоковой работы, такой как stanadrd, в отношении ошибок? Это по умолчанию использует бит good/fail/bad/eof, а не исключения?C++ Boost io streams, обработка ошибок

В документах boost упоминается только сброс std :: failure для ошибок потока и возможность распространения другой ошибки (например, badalloc от попыток выделения буфера), однако код повышения, похоже, не поймает их, вместо этого полагаясь на код пользователя для их обработки, но весь мой существующий код зависит от методов good(), bad() и метода clear() в тех случаях, когда он должен повторить попытку после ошибки.

+0

Какие документы Boost вы смотрите? –

+0

http://www.boost.org/doc/libs/1_39_0/libs/iostreams/doc/index.html –

+2

В http://www.boost.org/doc/libs/1_39_0/libs/iostreams/doc/ guide/exceptions.html # standard_iostreams «Третьей возможностью было бы следовать примеру std :: basic_streambuf и разрешать функции-члены фильтров и устройств сигнализировать об ошибках либо путем исключения исключений, либо путем возврата обозначенных индикаторов ошибок. потому что это осложнило бы характеристики различных концепций фильтра и устройства и затруднило бы понимание и поддержку внутренних компонентов stream_buffer ». – akramer

ответ

1

От http://www.trip.net/~bobwb/cppnotes/lec08.htm

состояние ошибки может быть установлен с помощью:

недействительными ясно (iostate = 0);

Значение по умолчанию, равное нулю, приводит к установке ios_base :: goodbit.

clear();

поэтому эквивалентен

clear (0);

что эквивалентно

ясно (ios_base :: goodbit);

Обратите внимание, что ios_base :: goodbit - отличное от нуля значение. clear() может использоваться для установки одного из других битов в качестве части кода программиста для оператора >>() для определенного объекта. Например:

if (bad_char) is.clear (ios_base :: badbit); // устанавливаем badt 0ttream

+0

Это не отвечает на вопрос. Вопрос заключается в том, демонстрируют ли потоки ввода/вывода [Boost] (http://www.boost.org/) аналогичный интерфейс. –

+0

Вопрос, который он читал, когда я отвечал, спрашивал об использовании настраиваемого потока, а затем ссылался на потоки повышения. Мне было непонятно, интересуется ли он только потоками форсирования, как они есть, если он сам подклассифицирует их или свои собственные потоки. – gymbrall

Смежные вопросы