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

Rozdział 26 Glitch przy sprawdzaniu strumienia.

Ostatnio zmodyfikowano 2018-03-27 19:43
Autor Wiadomość
Aramil
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
pekfos
» 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
Aramil
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
pekfos
» 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
Aramil
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