Hej "Blir galet"? Testade Använd cin.clear och cin.ignore, kolla på http://www.google.se/search?q=cin.clearKontrollera vad för typ "input"(cin) datan är?
Kan man kolla om input'en är en integer?
Tex
-
int tal;
cin >> tal;
-
Skriver man in t.ex. "Hej" så blir programmet galet. Kan man göra en kontroll om det är just en integer? Eller ska man lösa det på något annat sätt?
Tack!Sv: Kontrollera vad för typ "input"(cin) datan är?
Principen är att kolla om inmatningen var ok, det gör du genom att kolla på cin.
Kika på:
http://www.cplusplus.com/reference/iostream/istream/operator%3E%3E.html
Kolla på mitten av sidan, det du vill ha är failbit.
typ
bool failed = cin.rdstate() & ifstream::failbit;
Detta kanske du då ofta vill lägga i en loop tills man matat in korrekt.Sv:Kontrollera vad för typ "input"(cin) datan är?
bool failed = cin.rdstate() & ifstream::failbit;
Och den blir true om något går fel med cin. Men kan man på något sätt "rensa cin och börja om?";
Mitt problem
int menu_choice;
while(true)
{
cout << " Menu" << endl;
cout << " 1. Play a game" << endl;
cout << " 2. Exit" << endl;
cout << " Your Choice: ";
cin >> menu_choice;
switch(menu_choice)
{
case 1:
Play_A_Game();
break;
case 6:
//Exit
return 0;
break;
default:
cout << " Unknown menu entry enterd!";
break;
}
}
Skriver man något annat än en integer så blir programmet galet. D.v.s "Unknown menu entry enterd!" meddelande kommer att visas i all evighet.
Sv: Kontrollera vad för typ "input"(cin) datan är?