Lectura de algunos enteros y luego una línea de texto en C ++
Pregunta
Estoy leyendo entradas en un programa C ++. Primero algunos enteros, luego una cadena. Cuando intento leer la cadena con getline (cin, stringname);
, no lee la línea que escribe el usuario: en su lugar, obtengo una línea vacía, desde cuando el usuario presionó Ingrese después de escribir los enteros.
cin>>track.day; //Int
cin>>track.seriesday; //Int
getline(cin,track.comment); //String
¿Cómo puedo borrar el cin
( cin.clear ()
no funciona) para que la cadena no se llene sola con el " enter " clave?
Es una recepción de entrada normal, nada especial en la parte superior del código,
Tuve un problema como este pero olvidé la solución
Necesito borrar el cin
de alguna manera para que la cadena no se llene con " enter " clave.
Solución
Creo que tu cin de las entradas no está leyendo la nueva línea antes de la oración. cin omite los espacios en blanco iniciales y deja de leer un número cuando encuentra un no dígito, incluido el espacio en blanco.
Entonces:
std::cin >> num1;
std::cin >> num2;
std::cin.ignore(INT_MAX, '\n'); // ignore the new line which follows num2
std::getline(std::cin, sentence);
podría funcionar para usted