valida entrada de enteros a través del bit cin.fail() Man (2004-02-29)

El programa valida las entradas a través del bit de cin.fail(), este bit se activa cuando ha habido un error con el formato del dato, por ejemplo, cuando se espera un entero y se digita un carácter.

// Programa que valida entrada de enteros a través del bit cin.fail()
// Por: Man 
// Mail: Schatten@navegante.com.sv
// NOTA: Para los float, double y de mas numericos, se hace similar
// NOTA 2: Es preferible validad leyendo cadenas, es más fiable
// Cualquier sugerencia envíala a mi mail :)

#include <iostream>
using namespace std;

// INICIO DE LA FUNCION main
int main( void )
{
  int entero;  // variable que almacenara un entero

  // solicita la entrada de un entero
  cout << "Digite un entero: ";
  cin >> entero;
  
  // itera mientras la entrada fracase
  while ( cin.fail() )
  { 
    cin.clear();  // hay que limpiar las banderas del cin,   colocarlas de nuevo en estado de "bueno"
    cin.ignore( 2000, '\n' ); // vacia el buffer de la entrada ya que contiene "basura"
    
    // solicita la entrada de un entero
    cout << "\nValor no aceptable\n"
        << "Por favor digite un entero: ";
    cin >> entero;
  }

  // despliega los resultados
  cout << "\nEl entero digitado es: " << entero << endl;
 
  // pausa el programa para visualizar los resultados 
  cin.get();
  cin.get();
  
  return 0;  // El programa termina con exito
}  // fin de main

Regresar a ejemplos