// flujoestado.cpp - Estados de un flujo
#include <iostream>
using namespace std;

int main()
{
  int n = 0, estado = 0;

  cout << "Dato (entero, cadena, Ctrl+z, etc.): ";
  cin >> n;

  estado = cin.rdstate();

  if ( estado == ios::goodbit )
    cout << "correcto\n";         // operación correcta
  else if ( (estado & ios::eofbit) == ios::eofbit )
    cout << "\nfin de la entrada\n";
  else if ( (estado & ios::failbit) == ios::failbit )
    cerr << '\a' << "\ndato incorrecto\n";
  else if ( (estado & ios::badbit) == ios::badbit )
    cerr << '\a' << "\nerror fatal\n";
}

