Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zabezpieczenie strumienia wejściowego

Ostatnio zmodyfikowano 2012-05-02 14:14
Autor Wiadomość
rolkarz1
Temat założony przez niniejszego użytkownika
Zabezpieczenie strumienia wejściowego
» 2012-05-02 14:04:18
Witam, piszę projekt w cpp na zaliczenie przedmiotu i chciałbym aby był on w pewnym stopniu odporny na pewnego typu głupoty, typu wprowadzanie złego numeru operacji, lub wpisywanie czegokolwiek. Z liczbami sobie poradziłem. Mając funkcje case dla numerów od 1 do 4 w przypadku podania większej liczby, wyrzuca komunikat i jest w porządku. Lecz gdy wprowadzę znak, lub cały wyraz, program się sypie i muszę przerwać jego pracę. Czy jest na to jakiś prosty sposób? Dziękuję za odpowiedź.

(P.s szukałem ale jest tyyyle postów, że nie mogłem się doszukać)
P-55787
Unlimited
» 2012-05-02 14:11:42
C/C++
do
{
    if( c % 2 == 0 )
    {
        cout << "Zgadnij jaka liczba zostala wylosowana: " << "( " << gracz1 << " ) ";
    }
    else
    {
        cout << "Zgadnij jaka liczba zostala wylosowana: " << "( " << gracz2 << " ) ";
    }
    cin.clear();
    cin.sync();
    cin >> b;
    d = cin.good();
} while( d == false || b < 1 || b > 10 );

Tu jest kod z mojej gry 2-osobowej. Zabezpieczam ją przed podaniem liczb mniejszych niż 1, większych od 10 oraz przed podaniem LITERY bądź WYRAZU. Sprawdasz to kodem:

jakas_zmienna = cin.good();
a następnie dodajesz w warunku while:
jakas_zmienna == false

Było to w kursie na tej stronie.

Ważne byś w pętli zawsze czyścił flagę błędu i strumień:
cin.clear();
cin.sync();
P-55789
rolkarz1
Temat założony przez niniejszego użytkownika
» 2012-05-02 14:14:09
Dzięki wielkie, chyba sobie dam radę :)
P-55790
« 1 »
  Strona 1 z 1