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.
#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 :-[
Hola!
modifica el titulo! el mismo debe ser descriptivo al problema expuesto
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.
Muchas gracias, me funcionó ;D