Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: pablovg9 en 20 Julio 2015, 20:30 pm



Título: Duda simple, mi programa se salta una línea. C++
Publicado por: pablovg9 en 20 Julio 2015, 20:30 pm
Hola buenas!

Bueno estoy aprendiendo a programar así que tengo fallos básicos que no se solucionar.

En este caso por alguna razón que desconozco al insertar un valor se salta la siguiente línea.

Código:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

int main()
{
   double price;
   int units;
   char dis;
   string fname, nif, adds, pname;

   cout << "Product's price: " << endl;
   cin >> price;

   cout << "Units sold: " << endl;
   cin >> units;

   cout << "Discount (Y/N): " << endl;     //Sí aquí pongo cin.get(dis) se salta
   cin >> dis;                             //esta línea en vez de la de fullname

   cout << "Fullname: " << endl;           //Se salta directamente fullname
   getline(cin, fname);                    //no se por qué

   cout << "NIF: " << endl;
   getline(cin, nif);

   cout << "Address: " << endl;
   getline(cin, adds);

   cout << "Product's name: " << endl;
   getline(cin, pname);

return 0;
}


Seguro que es una tontería pero llevo una hora atascado con eso  :-[


Título: Re: Soy un n00b
Publicado por: engel lex en 20 Julio 2015, 20:36 pm
Hola!

modifica el titulo! el mismo debe ser descriptivo al problema expuesto


Título: Re: Duda simple, mi programa se salta una línea. C++
Publicado por: ivancea96 en 20 Julio 2015, 21:35 pm
El problema es que "cin >>" deja en el buffer de entrada el salto de linea, '\n'. Entonces, getline() al tratar de leer, lo encuentra, y termina ahí.

Lo que puedes hacer, es colocar "cin.ignore();" después del "cin >>", para ignorar el salto de linea que quedará ahí.

Otra forma, es usar getline siempre. Cuando tengas entradas más elaboradas, en un futuro, te recomiendo usar siempre getline(), y convertir en números con funciones como stoi(), stod(), etc, para convertir las strings en enteros, doubles, etc. Pero temporalmente, ignore() te ha de servir.


Título: Re: Duda simple, mi programa se salta una línea. C++
Publicado por: pablovg9 en 21 Julio 2015, 01:40 am
Muchas gracias, me funcionó  ;D