Ver Mensaje Individual
  #6 (permalink)  
Antiguo 16/06/2012, 15:28
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Ciclo salta cin al presionar un NO NÚMERO con variable INT

Buenas,

Dentro del objeto cin, existe un flag que indica si la lectura que se ha hecho ha sido válida o incorrecta.

El método clear resetea ese flag al estado inicial.

El método ignore, como has dicho, elimina los caracteres que han quedado en el buffer de lectura. El primer parámetro indica el número de caracteres que se eliminan (en el caso expuesto, se eliminan el máximo número posible, que es INT_MAX). El segundo parámetro indica hasta que caracter se elimina, es decir, en el caso expuesto, elimina los caracteres del buffer hasta que llegue a un \n. Eso quiere decir, que elimina, o INT_MAX caracteres o hasta que llegue al caracter delimitador.

Sobre el funcionamiento en Visual C++, puede ser distinto, porque el Visual C++ tiene añadidos sobre el C++ estándar en ciertas cosas (no es un bug del Dev C++, o eso creo. Además, el Dev C++ usa un compilador externo, que puede ser el MinGW u otro, mientras que el Visual usa uno propio creado por Microsoft).

Saludos y espero que haya quedado algo claro.