Leggendo alcuni numeri interi quindi una riga di testo in C ++
Domanda
Sto leggendo l'input in un programma C ++. Prima alcuni numeri interi, poi una stringa. Quando provo a leggere la stringa con getline (cin, stringname);
, non legge la riga che l'utente digita: invece, ottengo una riga vuota, da quando l'utente ha premuto Inserisci dopo aver digitato gli interi.
cin>>track.day; //Int
cin>>track.seriesday; //Int
getline(cin,track.comment); //String
Come posso cancellare cin
( cin.clear ()
non funziona) in modo che la stringa non si riempia di " inserisci " chiave?
È una normale ricezione di input, niente di speciale nella parte superiore del codice,
Ho avuto un problema come questo ma ho dimenticato la soluzione
Devo cancellare il cin
in modo che la stringa non si riempia di " invio " chiave.
Soluzione
Penso che il tuo cin degli ints non stia leggendo la nuova riga prima della frase. cin salta lo spazio bianco iniziale e interrompe la lettura di un numero quando incontra uno spazio non numerico, incluso lo spazio bianco.
std::cin >> num1;
std::cin >> num2;
std::cin.ignore(INT_MAX, '\n'); // ignore the new line which follows num2
std::getline(std::cin, sentence);
potrebbe funzionare per te