Rozdział 26 Glitch przy sprawdzaniu strumienia.
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Rozdział 26 Glitch przy sprawdzaniu strumienia.

AutorWiadomość
Temat założony przez niniejszego użytkownika
Rozdział 26 Glitch przy sprawdzaniu strumienia.
» 2018-03-27 19:15:43
Witam!
Mam problem z tym oto fragmentem kodu:

C/C++
cin >> wiek;
if( cin.fail() )
{
    do
    {
        cout << "Blad! Podaj liczbe!";
        cin.sync();
        cin.clear();
       
       
    } while( cin >> wiek && cin.good() == false );
   

If oraz pętla mają sprawdzać czy użytkownik nie wpisał błędnego znaku. Problem w tym że program albo wyskakuje z pętli po wpisaniu błędnej danej albo glitchuje się i wypisuje w nieskończoność komunikat "Blad! Podaj liczbe!"
P-170318
» 2018-03-27 19:24:14
Po pierwsze, najpierw clear(), potem sync().
Po drugie, nie sync(), tylko ignore().
Po trzecie, twój warunek pętli nie ma większego sensu.
P-170320
Temat założony przez niniejszego użytkownika
» 2018-03-27 19:34:59
Dobra wprowadziłem poprawki i faktycznie zaskoczyło. Dzięki za pomoc.

C/C++
if( cin.fail() )
{
    do
    {
        cout << "Blad! Podaj liczbe!";
        cin.clear();
        cin.ignore();
        cin >> wiek;
    } while( cin.fail() == false );
   
}

Teraz tylko prosił bym o krótkie wytłumaczenie dlaczego. O ile kolejność clear() i sync() rozumiem. Najpierw czyszczę flagę później bufor. Całkiem logiczne... O tyle dlaczego użycie sync() jest błędem? Co do trzeciego to czułem że nie ma wielkiego sensu ale nie byłem pewien w czym leży problem...
P-170323
» 2018-03-27 19:41:23
tyle dlaczego użycie sync() jest błędem?
» Kurs C++ » Poziom 1Obsługa strumienia wejściowego lekcja
Jak ktoś znajdzie czas na przepisanie tej lekcji, sync() będzie tylko wspomniane że istnieje (i nie należy go używać). Na razie jest tylko dopisana czerwona ramka.
P-170325
Temat założony przez niniejszego użytkownika
» 2018-03-27 19:43:37
Dobra, teraz wydaje się to całkiem jasne. Dzięki za pomoc, zamykam temat.
P-170326
« 1 »
 Strona 1 z 1