Dev - C++ - Duda con Buffer de cin

 
Vista:

Duda con Buffer de cin

Publicado por David (2 intervenciones) el 17/04/2014 18:04:17
a ver si alguien me puede echar una mano con esto:

tengo un problema con la lectura de cadenas con la funcion getline(), al principio me pasaba que si habia un '\n' en el buffer de cin, me guardaba una cadena vacia, y puse un cin.ignore() antes para limpiar el buffer, pues bien, ahora el problema es que si el buffer no tiene nada, y ejecuta el ignore(), al coger la cadena con el getline(), se come el primer caracter, no lo guarda.

La solucion que se me ocurria era comprobar antes de hacer el ignore() si habia algo en el buffer o no, pero no se como se comprueba eso.

a ver si alguien sabe como, u otra forma de solucionar esto.

espero que se haya entendido bien mi problema.

un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Duda con Buffer de cin

Publicado por Pico (24 intervenciones) el 17/04/2014 18:57:51
No guardes la cadena vacía. Compruébala y si es vacía, un return, pasa de ella.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de vangodp
Val: 73
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con Buffer de cin

Publicado por vangodp (287 intervenciones) el 17/04/2014 19:02:30
Como guardas esa cadena??
Si pegas el código aquí se te puede ayudar mejor.


string linea;
getline(cin, linea);
cout << linea;

Asi es como lo hago y me va bien :/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda con Buffer de cin

Publicado por David (2 intervenciones) el 17/04/2014 21:24:32
ya encontre la solucion:

la funcion peek() devuelve el siguiente caracter del buffer de entrada, y asi puedo comprobar si en el buffer hay un salto de linea, y ejecutar la funcion ignore() solo si lo hay

gracias de todas formas a los que respondieron ;)

un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 45
Ha disminuido su posición en 6 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Duda con Buffer de cin

Publicado por xve (68 intervenciones) el 18/04/2014 10:02:37
Gracias por compartirlo David!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Duda con Buffer de cin

Publicado por Héctor Darío Aristizabal Soto (1 intervención) el 08/04/2020 03:43:10
Para limpiar el Buffer debes usar fflush(stdin); seguidamente despues de la cadena almacenada. Si usas un bucle debe ir al inicio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar