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.

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top