getline()

Discussion on C, C++ and C++11 at the COJ. This is the place to clear your doubts about these languages, and to share with the community the new things you learn about them.
mYshell
Posts: 5
Joined: Thu Oct 13, 2016 9:21 pm
Gender: Male

getline()

Postby mYshell » Fri Oct 28, 2016 6:23 pm

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....



User avatar
isaac
Posts: 83
Joined: Mon Oct 26, 2015 6:20 pm
Gender: None specified

Re: getline()

Postby isaac » Sat Oct 29, 2016 9:49 am

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'.


Return to “C/C++/C++11”

Who is online

Users browsing this forum: No registered users and 1 guest