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

[Lekcja 9] O co chodzi z tym std::cin.clear(); std::cin.sync() i std::cin.ignore();?

Ostatnio zmodyfikowano 2013-02-10 13:02
Autor Wiadomość
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...

C/C++
#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 ]; //Alokuje wprowadzane zmienne, uzycie wskaznika *p
    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; // Uwalnia zmienne, usuwa tablice i zwalnia pamiec
    cin.get();
    cin.get();
    return 0;
}
P-76066
DejaVu
» 2013-02-10 10:57:48
This effectively means that the unread characters in the buffer are discarded.

http://translate.google.pl/#en/pl/This effectively means that the unread characters in the buffer are discarded.

Czyli zawartość bufora zostaje po prostu wyczyszczona :P
P-76071
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
P-76081
1 « 2 »
Poprzednia strona Strona 2 z 2