Título: duda con cin.ignore() Publicado por: Mientras en 22 Agosto 2015, 05:20 am Hola a todos. Estoy aprendiendo c++(poo) y encontré un ejemplo que me generó una duda una duda. La linea que dice cin.ignore pensé que era innecesario ponerla ya que al iniciar el programa no se llenaría de "basura" pero luego pensé que si es necesario en caso llamemos varias veces al método. Entonces cuando ejecuto no me muestra directamente "Ingrese nombre de impuesto" si no que primero me espera a que presione enter. Como evito eso?
Este es el código. Código
Título: Re: duda con cin.ignore() Publicado por: user-marcos en 22 Agosto 2015, 12:40 pm Puedes usar algo así:
Código
Título: Re: duda con cin.ignore() Publicado por: ivancea96 en 22 Agosto 2015, 13:40 pm Lo mejor que puedes hacer es no combinar el operador "<<" con "getline".
Utilizar siempre getline es la mejor solución. Título: Re: duda con cin.ignore() Publicado por: Mientras en 24 Agosto 2015, 05:02 am 1. Hola, gracias por responder, quisiera saber otras formas?
2. Puedes ser más específico con lo de getline... Título: Re: duda con cin.ignore() Publicado por: ivancea96 en 24 Agosto 2015, 13:25 pm El problema de "cin<<", es que deja saltos de linea en el buffer de entrada sin leer. Cuando tratas de usar getline, coge esos saltos de linea, y no te deja meter datos. Con "cin.ignore()", eliminas esos saltos de linea.
Para leer en consola, te recomiendo usar siempre, salvo casos especiales: Código
De ese modo, siempre obtendrás una cadena, y el buffer será limpiado correctamente. Ahora bien, en caso por ejemplo, de que quieras interpretar la cadena como un entero, tienes las funciones: Código
Son de la librería <string>. Aquí puedes verlas todas: http://www.cplusplus.com/reference/string/ (http://www.cplusplus.com/reference/string/) De este modo, utilizas siempre getline, y evitas utilizar cin<< y cin.ignore. |