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.

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top