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). |
|
DejaVu |
» 2015-12-02 20:58:32 |
|
carlosmay |
» 2015-12-02 21:01:26 Obsługa strumienia wejściaPatrz 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() . |
|
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.): 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? |
|
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. |
|
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. |
|
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. |
|
DejaVu |
» 2015-12-03 10:00:56 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=46624istream::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. |
|
« 1 » 2 |