• Lunes 16 de Diciembre de 2024, 07:03

Autor Tema:  Leer de pantalla  (Leído 1286 veces)

lydia_watanabe

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Leer de pantalla
« en: Martes 3 de Marzo de 2009, 21:11 »
0
Hola a todos, estoy enfrascada en una aplicación que entre las muchas cosas que hace, recoge un texto por pantalla y más tarde lo muestra.

El código es muy sencillo

Código: C++
  1. string texto;
  2. cin >> texto;
  3.  
  4. cout << texto << endl;
  5.  

El problema que tengo es que me gustaría que el usuario pudiera escribir una frase más con espacios, por ejemplo

Código: Text
  1. El niño tiene hambre
  2.  

Pero al leer la frase lo único que se guarda en la variable texto es El.

¿Qué puedo hacer para que se almacene la frase completa?

lydia_watanabe

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Leer de pantalla
« Respuesta #1 en: Martes 3 de Marzo de 2009, 21:19 »
0
Bueno, yo misma me he solucionado el problema (aunque ahora tengo otro problema que comento al final) y por si alguien llega a tener la misma duda, lo único que hay que hacer es sustituir la linea

Código: C++
  1. cin >> texto
  2.  

por esto

Código: C++
  1. getline(cin, texto);
  2.  

El problema que me surge ahora es que el cursor no se queda esperando a que escriba algo, sino que se lo salta olímpicamente.

betopin

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
    • http://www.programasenc.blogspot.com
Re: Leer de pantalla
« Respuesta #2 en: Miércoles 4 de Marzo de 2009, 02:00 »
0
Clásico problema...tienes que "resetear" el buffer ya que en este se quedó el caracter 'n' que como bien sabes corresponde a un salto de linea

Para "limpiarlo" coloca un getchar antes de la captura de la cadena y listo

Saludos!