Page 1 of 1

getline()

Posted: Fri Oct 28, 2016 6:23 pm
by mYshell
Cada vez que uso la función getline obtengo cosas extrañas si la acompaño de otra funcon de entrada.
Por ejemplo: me hace falta entrar un entaro y luego una cadena y a la hora de leer la cadena pasa como si ya la ubiera leido antes....

Re: getline()

Posted: Sat Oct 29, 2016 9:49 am
by isaac
Tienes que tener claro como funciona la lectura en C++ para entender lo que te sucede. Existe algo llamado Buffer de entrada, que almacena caracteres cuando lees alguna variable. Puede ser que esos caracteres se hayan introducido en lo que estas leyendo y te de problemas. Si vas a leer un entero y luego una cadena, debes, antes de leer con getline, vaciar el buffer de entrada fflush(stdin). Si te sigue dando problemas, puedes leerlo simplemente con el scanf asi:

int n;
char cadena[101];

scanf("%d %[^\n]", &n, cadena);

La sentencia anterior lee un entero y tiene un selector %[^\n] que le dice que almacene en $cadena, todos los caracteres que vengan en lo adelante, excepto ('^') el fin de linea '\n'.