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

Zastosowanie cin.get(); bez parametru w kodzie.

Ostatnio zmodyfikowano 2015-01-16 22:38
Autor Wiadomość
Rigid
Temat założony przez niniejszego użytkownika
Zastosowanie cin.get(); bez parametru w kodzie.
» 2015-01-15 14:47:38
Witam
Nie jestem pewien czy dobrze zatytuowałem ten post ale już przechodze do rzeczy.
Mam problem ze zrozumieniem pewnego fragmentu kodu:

C/C++
double i;

while( !( cin >> i ) )
{
    cout << "Blad! Podaj liczbe";
    cin.clear();
    cin.get();
}
return 0;

Wiem ze:

- pętla wykona się gdy wczytam inny znak niż liczba
- po wczytaniu błędnego znaku muszę użyć cin.clear() aby wyzerować strumień wejsciowy
- pętla zakończy się po podaniu liczby

nie wiem natomiast dlaczego przy braku cin.get();
pętla wykonuje się bez przerwy, automatycznie. [zapętla się]

Więc moje pytania brzmią:
1) co takiego robi tu cin.get();
2) jakie są zastosowanie cin.get(); [bez parametru] [do tej pory używałem tego tylko do 'oczekiwania' na wciśnięcie jakiegoś klawisza]
P-124971
1aam2am1
» 2015-01-15 15:15:04
cin.get(); //czyta pojedynczy charakter z bufora. Nie zadziała to dobrze jeżeli w buforze ezie więcej niż jeden znak niepoprawny. Np wpiszesz "abc" i cin.get() pobierze ci tylko "a", "bc" pozostaną w buforze.
Zamiast tego powinieneś zastosować cin.sync();
P-124972
Monika90
» 2015-01-15 15:26:07
Nie używaj cin.sync() ponieważ nie wiadomo co cin.sync() robi.

Sposób przywracania strumienia do oczekiwanego stanu zależy od konkretnej sytuacji, prosta metoda, która się często sprawdzi przy wpisywaniu danych z klawiatury, wygląda tak

    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');


wymaga to #include <limits>
P-124973
Nitr0Skay
» 2015-01-15 21:00:10
@Monika
http://www.cplusplus.com/reference/istream/istream/sync/
P-125007
pekfos
» 2015-01-16 16:25:35
@Monika
http://www.cplusplus.com/reference/istream/istream/sync/
No i co? Chodzi o to, że ta metoda dla cin nie musi nic robić - i tak jest np pod Linuksem.
P-125037
Nitr0Skay
» 2015-01-16 22:38:55
Zatem pa licho ona istnieje ??
P-125069
« 1 »
  Strona 1 z 1