В C ++, вы можете вручную установить бит бит потока? Как? - PullRequest
20 голосов
/ 29 октября 2009

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

Спасибо!

1 Ответ

27 голосов
/ 29 октября 2009

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

#include <iostream>
#include <ios>

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

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

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

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

(исключение мне кажется чище, но YMMV) * ​​1008 *

...