odnośnie tematu "pomoc z zabezpieczeniem przed wpisaniem literki"
Ostatnio zmodyfikowano 2011-05-02 19:02
Anomander Temat założony przez niniejszego użytkownika |
odnośnie tematu "pomoc z zabezpieczeniem przed wpisaniem literki" » 2011-05-02 16:33:50 Witam, przeglądałem tamten temat i napisałem własną wersję, zastanawia mnie czemu linijka w pętli while wyświetla się dwukrotnie, sam nie mogę tego rozkminić: #include <iostream>
using namespace std;
int main() { int liczba; cout << "Podaj liczbe: " << endl; cin >> liczba; bool spr = cin.good(); if( !spr ) { do { cout << "miales podac liczbe" << endl; cin >> liczba; spr = cin.good(); cin.clear(); cin.sync(); } while( !spr ); } cout << "gratulacje" << endl; }
chodzi o fragment "miales podac liczbe" najpierw sam napisałem ten program, ale później zauważyłem że w programie końcowym w temacie jest dokładnie taki sam błąd. Przy okazji chciałbym zapytać czy to normalne że jak w składni znajduje się cin.clear i cin.sync to program tak długo się wczytuje?okienko się otwiera ale zanim wykona jakąkolwiek instrukcję z kodu mija z 20-30 sekund? |
|
ison |
» 2011-05-02 16:48:18 ponieważ w 2 miejscach wczytujesz, jeśli za pierwszym razem wpiszesz nieprawidłową liczbę to zamiast wyczyścić bufor wczytujesz kolejną zmień kolejność, w pętli najpierw czyść bufor/flagi błędów if( !spr ) { do { cin.clear(); cin.sync(); cout << "miales podac liczbe" << endl; cin >> liczba; spr = cin.good(); } while( !spr ); }
Przy okazji chciałbym zapytać czy to normalne że jak w składni znajduje się cin.clear i cin.sync to program tak długo się wczytuje?okienko się otwiera ale zanim wykona jakąkolwiek instrukcję z kodu mija z 20-30 sekund?
|
nie, może antywirus Ci skanuje aplikację przed uruchomieniem? |
|
Anomander Temat założony przez niniejszego użytkownika |
» 2011-05-02 19:02:31 Tak, to był antywirus :/ Wielkie dzięki za pomoc, zamykam temat |
|
« 1 » |