Стани помилки підтримуються кожним із потоків. Стани помилки зберігаються як набір бітів: eofbit, failbit і badbit. Множинні стани одержуються за допомогою операції побітового АБО.
int eof();
– повертає ненульове значення, якщо в потоці виявлений символ кінця файлу.
int bad ();
– повертає ненульове значення, якщо при виконанні деякої операції над потоком відбулася помилка. Відновлення в цьому випадку малоймовірне.
int fail();
– повертає ненульове значення, якщо при виконанні деякої операції, такої як витяг або перетворення, у потоці відбулася помилка. При цьому стані можливе відновлення, а потік може використовуватися далі, оскільки при відновленні стан помилки скидається. Крім того, повертає ненульове значення, якщо ненульове значення повертає bad() (але при цьому відновлення малоймовірне).
int good();
– повертає ненульове значення, якщо eof(), bad() і fail() повертають нуль.
int rdstate();
– повертає поточний стан помилки.
void clear(int state);
– установлює поточний стан помилки потоку.
istream s;
// установлює failbit, не торкаючи інші
s.clear(ios::failbit | s.state());
int operator!();
operator void*();
– перша повертає ненульове значення, якщо встановлено failbit або badbit. Друга повертає нульове значення, якщо встановлено failbit або badbit.
if(!myStream) // operator!()
if(myStream) // operator void*()