как установить бадбит потока с помощью настраиваемого streambuf - PullRequest
0 голосов
/ 06 июня 2018

Я настроил std::streambuf.Примерно так:

class mybuf : public std::streambuf {
  ...
  virtual std::streambuf::int_type underflow() {
    if(eof) {
     return traits_type::eof();
    }
    ...
  }
  ...
  std::istream stream(new mybuf(...));

Установка флага eof потока выполняется путем возврата eof в функцию underflow().

Как установить флаг badbit дляпоток?Должна ли функция overflow() генерировать исключение?

1 Ответ

0 голосов
/ 06 июня 2018

Бросок исключения - действительно путь.

См. Справочную страницу для std::ios_base::iostate, а именно:

The badbit устанавливается следующими стандартными библиотечными функциями:

  • ...
  • Каждая функция ввода-вывода потока, если исключение выдается какой-либо функцией-членом связанного буфера потока (например, sbumpc(), xsputn(), sgetc(), overflow() и т. д.)
  • ...
...