Bug en String.h y getline( Eternal Idol, Littlehorse alguien)que opinan?

Iniciado por kisk, 28 Febrero 2014, 18:20 PM

0 Miembros y 1 Visitante están viendo este tema.

kisk

Cita de: do-while en  2 Marzo 2014, 21:43 PM
XD

Mira, haz este experimento:

Código (cpp) [Seleccionar]

string cad;
int n;

cin >> n;

getline(cin, cad);

cout << n << endl;

cout << cad;


Y cuando toque leer datos escribes un numero y una cadena con lo que se te ocurra.

Veras que te lee el número y luego la cadena. Es decir, después de leer el numero no descarta el resto de la linea que introduzcas, sino que solo descarta el número leído así que después de leer el numero no se quedará esperando a que introduzcas alguna cosa y pulses intro, sino que terminará de leer lo que había, que es lo que pasa en tu programa.

Lo mismo pasaría si utilizases cin para leer una cadena. Solo leería hasta el primer caracter en blanco (un espacio, un tabulador...) y dejaría el resto (esto creo que puedes modificarlo especificando otro delimitador para que cin termine de leer...).

Así que cuando utilices cin, acuérdate siempre de terminar de leer lo que pueda quedar en el flujo de entrada. Como ya sabes que la entrada termina con un \n, lo unico que tienes que hacer es while(cint.get() != '\n');

¡Saludos!
muchas gracias lo e entendido gracias a todos!
La vieja escuela me da nostalgia la nueva me da naucias dime cual es la escuela si ambas me deprimen (8)