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

cin.clear(), cin.sync() - prośba o wytłumaczenie

Ostatnio zmodyfikowano 2015-12-03 15:21
Autor Wiadomość
Lich555
Temat założony przez niniejszego użytkownika
cin.clear(), cin.sync() - prośba o wytłumaczenie
» 2015-12-02 20:34:27
Witam. Prosiłbym o jak najłatwiejsze wytłumaczenie tych 2 rzeczy. Mowa o: cin.clear() oraz cin.sync(). cin.sync() rozumiem tak, że czyści nam cin. Wpiszemy coś do cin, a to nam to wyczyści. Nie wiem, czy dobrze to rozumiem, jeśli nie, to proszę o poprawkę. cin.clear() w ogóle nie rozumiem. W poradniku pisze: "czyści flagi błędu". Co ja mam z tego zrozumieć? :P Prosiłbym o podanie prostej definicji tych 2 rzeczy, przykładów, gdzie dobrze widać zastosowanie tych 2 rzeczy i co by się stało, gdyby ich tam nie było.

Kolejna rzecz o której wytłumaczenie bym poprosił, to następujący przykład (łączy się to z wyżej napisanymi wypocinami).
P-141331
DejaVu
» 2015-12-02 20:58:32
http://cpp0x.pl/kursy/Kurs-C++​/Poziom-4​/Wczytywanie-zawartosci-pliku-​a-kontrola-bledow​/485

W powyższym rozdziale masz wytłumaczone dokładnie co to są flagi błędów.

PS. Nie ma innego cin-a. Jest tylko jeden strumień standardowego wejścia.
P-141335
carlosmay
» 2015-12-02 21:01:26
Obsługa strumienia wejścia
Patrz

Czyszczenia strumienia

.

W nowym standardzie metoda cin.sync() straciła właściwości opisane w kursie,
więc polecam zapoznać się z metodą cin.ignore() .
P-141336
Lich555
Temat założony przez niniejszego użytkownika
» 2015-12-02 21:14:38
Dzięki za pomoc, za chwilę przejrzę te linki. A co do cin. Nie wiem czy mnie zrozumiałeś. Jak wepchniemy sobie dodatkowo do tego taką linijkę (nie chcę mi się całego kodu modyfikować, wiem, że zrozumiecie (mówię o przekazaniu argumentu do funkcji itd.):
C/C++
cout << "Podaj nr domu: " << endl;
cin >> nr domu;
Wpiszemy imię i nazwisko. Wpiszemy poprawnie wiek, ale zamiast nr domu wpiszemy, np "dom". Program nam każe wpisywać od nowa i wiek i nr domu, czy sam nr domu?
P-141338
carlosmay
» 2015-12-02 21:53:34
Program nam każe wpisywać od nowa i wiek i nr domu, czy sam nr domu?
 Program będzie pytał powtórnie tylko o to co mu oprogramujesz na powtarzanie w razie błędu.
W pętle pakujemy to co może przynieść błędy.

W twoim kodzie tylko numer domu.
P-141339
Monika90
» 2015-12-02 22:04:16
W nowym standardzie metoda cin.sync() straciła właściwości opisane w kursie,
Nie straciła, bo nigdy ich nie miała.
P-141340
carlosmay
» 2015-12-02 22:10:57
Drugą metodą jest std::cin.sync(), która czyści bufor strumienia.
 Może źle się wyraziłem, ale teraz w VS muszę używać std::cin.ignore() do wyczyszczenia strumienia z danych.
P-141341
DejaVu
» 2015-12-03 10:00:56
https://gcc.gnu.org/bugzilla​/show_bug.cgi?id=46624
istream::sync() calls streambuf::sync(), the behaviour of which depends on the specific streambuf type.  Since the type of streambuf used by std::cin is unspecified, the behaviour of cin.sync() is also unspecified.
Co prawda nie znalazłem nowszego wpisu na ten temat, ale jak rozumiem jest on aktualny i wypadałoby się pozbyć cin::sync z kursu.
P-141348
« 1 » 2
  Strona 1 z 2 Następna strona