C++ problem z zabezpieczaniem strumienia wejścia
Ostatnio zmodyfikowano 2011-07-01 21:20
Dark Temat założony przez niniejszego użytkownika |
C++ problem z zabezpieczaniem strumienia wejścia » 2011-06-30 12:38:30 Mam pewien problem z zabezpieczeniem strumienia, ponieważ nieważne czy wpiszę liczbę czy jakiś znak i tak dalej mi wykonuje program. Używam Visual C++ 2010 Express Oto przykładowy kod: #include <iostream> using namespace std; int main() { double a; bool blad = cin.fail(); do { cout << "Wypisz liczbe: "; cin >> a; blad; cin.clear(); cin.sync(); } while( blad ); cout << "Liczba to " << a << endl; return 0; }
|
|
ison |
» 2011-06-30 12:52:45 raczej powinno byc to przed pętlą nie jest konieczne, sprawdzasz czy się poprawnie wczytało zanim zaczniesz wczytywać (wystarczy sama deklaracja zmiennej blad) można by to zrobić nawet beż deklarowania dodatkowej zmiennej #include <iostream>
using namespace std;
int main() { double a; do { cin.clear(); cin.sync(); cout << "Wypisz liczbe: "; cin >> a; } while( cin.fail() ); cout << "Liczba to " << a << endl; return 0; }
|
|
Elaine |
» 2011-06-30 13:03:07 Kto zauważy błąd w kodzie isona? :> |
|
Dark Temat założony przez niniejszego użytkownika |
» 2011-06-30 13:03:26 Dzięki za rozwiązanie mojego niedopatrzenia :) |
|
Dark Temat założony przez niniejszego użytkownika |
» 2011-06-30 13:04:29 Czyszczenie strumienia w złym miejscu? Moim zdaniem powinno być tak: #include <iostream>
using namespace std;
int main() { double a; bool blad; do { cout << "Wypisz liczbe: "; cin >> a; blad = cin.fail(); cin.clear(); cin.sync(); } while( blad ); cout << "Liczba to " << a << endl; return 0; }
|
|
ison |
» 2011-06-30 13:12:27 @up nie o to chodzi, Twój program również działa 'źle' te programy są przeznaczone tylko do wczytywania wejścia bezpośrednio z konsoli nie z pliku więc działają ok :) Iname się doszukuje dziury w całym ;p |
|
Elaine |
» 2011-06-30 13:21:24 nie o to chodzi, Twój program również działa źle |
Fixed that for you. :P
te programy są przeznaczone tylko do wczytywania wejścia bezpośrednio z konsoli nie z pliku więc działają ok :) |
Pliku? Jakiego pliku? Nie potrzeba żadnych plików, żeby program wpadł w nieskończoną pętlę :P
Iname się doszukuje dziury w całym ;p |
Gdyby to było całe, to by nie było problemu :P Niestety, jest duża dziura, którą łatwo zauważyć. |
|
Dark Temat założony przez niniejszego użytkownika |
» 2011-06-30 13:23:09 Co to za przypadek wpadania w nieskończoną pętlę? Może to objaśnisz. |
|
« 1 » 2 3 |