Подтвердить что ты не робот

В С++ вы можете вручную установить failbit потока? Как?

Я перегружаю оператор входного потока для использования с классом Time и хотел бы вручную установить failbit входного потока, если вход не соответствует ожидаемому временному формату (hh: mm). Это можно сделать? Как?

Спасибо!

4b9b3361

Ответ 1

Да, вы можете установить его с помощью ios::setstate, например:

#include <iostream>
#include <ios>

int main()
   {
   std::cout << "Hi\n";

   std::cout.setstate(std::ios::failbit);

   std::cout << "Fail!\n";
   }

Второй вывод не будет создан, потому что cout находится в состоянии отказа.

(Исключение кажется мне более чистым, но YMMV)