Dobry wieczór,
żeby zadać pytanie najpierw pokażę kod:
void SI::levSI()
{
bool goodChoice=false;
while (!goodChoice)
{
cout << endl << "Podaj poziom trudnosci [e(asy), n(ormal), h(ard)]";
char l2;
cin >> l2;
char l = getchar();
switch (l2)
{
case 'e':
case 'E': player::lev_si='e';
goodChoice = true;
break;
case 'm':
case 'M': player::lev_si='m';
goodChoice = true;
break;
case 'h':
case 'H': player::lev_si='h';
goodChoice = true;
break;
default: cout << "Zla odpowiedz, zapytam ponownie" << endl;
break;
}
}
}
Problem polega na tym, że muszę pobrać jedynie jeden znak. Funkcja działa i ten znak pobiera, ale gdy napiszę np: "eqqe", to zapisuje pierwszy znak, ale mimo to wypisuje "Zla odpowiedz(...)", co psuje mi estetykę programu.
Myślę, że jeszcze nie raz trafię na ten problem dlatego uznałem, że zamiast go ominąć poszukam odpowiedzi.
EDIT: Zapomniałem dodać, że próbowałem zarówno cin, cin.get(char) - podkreśla mi char w nawiasie i nie kompiluje, oraz getchar(). Żaden z tych sposobów nie działa.