[Lekcja 9] O co chodzi z tym std::cin.clear(); std::cin.sync() i std::cin.ignore();?
Ostatnio zmodyfikowano 2013-02-10 13:02
usmiech |
» 2013-02-10 02:12:01 SaviPL ... pokaze pewien kod ..., ale nie patrz na ten kod co on robi, popatrz na poczatek main, do ... while zadaniem tego programu bylo niedopuszczenie wprowadzania przez uzytkownika 'dziwnych danych', czyli wszystkiego poza liczbami. Posluzylem sie cin.clear i cin.sync /zdadzam sie s dejavu, ze czyszczenie jest czesto bardzo przydatne/. Zobacz jak to dziala, usun ta petle z main, zamieszaj i obserwuj co sie dzieje... #include <iostream> using namespace std;
int main() { int sum = 0; int userInput = 0; do { cin.clear(); cin.sync(); cout << "Enter a number of items: "; cin >> userInput; } while( cin.fail() ); int * p = new int[ userInput ]; for( int i = 0; i < userInput; i++ ) { do { cin.clear(); cin.sync(); cout << "Enter an item #" << i << ": "; cin >> p[ i ]; } while( cin.fail() ); sum += p[ i ]; } cout << "Here are the items: " << endl; for( int i = 0; i < userInput; i++ ) { cout << p[ i ] << " "; } cout << endl; cout << "The total is: " << sum << endl; cout << "The aver. is: " <<( double ) sum / userInput << endl; delete[] p; cin.get(); cin.get(); return 0; } |
|
DejaVu |
» 2013-02-10 10:57:48 |
|
pekfos |
» 2013-02-10 13:02:50 Czyli zawartość bufora zostaje po prostu wyczyszczona :P |
To oczywiste następstwo wypełnienia bufora innymi danymi :P |
|
1 « 2 » |