Es curioso, a mí entrando más de 10 caracteres si me funciona
[tmp]$ ./test
hola esto es una prueba
dia: 2
dia: 0
Fijate que sigue impriendo 0, el valor que tiene día por defecto.
Yo sigo leyendo y buscando... si cin.getline llega al número máximo de carácteres sin encontrar el delimitador, activa el flag failbit.
#include <iostream>
#include <limits>
using namespace std;
int main()
{
char nombre[5];
int dia = 0;
cin.getline(nombre, 5);
cin.ignore(numeric_limits<int>::max(), '\n');
if (cin.fail())
cout << "fail\n";
cout << nombre;
cout << "\ndia: ";
cin >> dia;
cout << "el dia es " << dia << endl;
return 0;
}
[tmp]$ ./dd
hola esto es una prueba
fail
hola
dia: el dia es 0
Fijaros como imprime fail.
He introducido esta línea antes del if(cin.fail())
cin.clear()
Ahora NO imprime el fail pero sigue sin funcionar, el cin no lee nada.
Estoy amargado con esto