Bloccato durante il tentativo di ottenere input da cin

Okay, sono molto nuovo di C ++, sono esperto di C # e non so davvero cosa c’è di sbagliato nel mio codice. Sto solo cercando di capire come controllare se l’input dell’utente è un numero intero o una stringa.

Ma quando digito ‘a’ o qualche altra stringa, il ciclo while non finisce mai.

#include  using namespace std; int main () { int number; goto skip; do { cout << "Wrong input. Try again."; skip: cout <> number; } while (!cin); cout << "Correct input."; system("PAUSE"); } 

Una volta che il tuo stream è entrato in modalità fallimento, rimarrà in modalità fallimento fino a quando non clear() suoi bit di stato. Tuttavia, la semplice rimozione dei bit non sarà di aiuto in quanto il personaggio in errore rimarrà nel stream. Molto probabilmente vuoi ignorare l’intera riga prima di riprovare:

 while (!(std::cout << "Number: " && std::cin >> number)) { std::cout << "Wrong input. Try again.\n"; std::cin.clear(); std::cin.ignore(std::numeric_limits::max(), '\n'); } std::cout << "Correct input.\n"; std::cin.ignore();