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.
Post Reply
mYshell
Posts: 5
Joined: 1 year ago
Gender: Male
Cuba

getline()

Post by mYshell » 1 year ago

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: 2 years ago
Gender: None specified

Re: getline()

Post by isaac » 1 year ago

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

Post Reply

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