Pourquoi devrions-nous appeler cin.clear() et cin.ignore() après la lecture de l'entrée?

Code Google Université du tutoriel C++ utilisé pour avoir ce code:

//Description: Illustrate the use of cin to get input
//and how to recover from errors.

#include <iostream>
using namespace std;

int main()
{
  int input_var = 0;
  //Enter the do while loop and stay there until either
  //a non-numeric is entered, or -1 is entered.  Note that
  //cin will accept any integer, 4, 40, 400, etc.
  do {
    cout << "Enter a number (-1 = quit): ";
    //The following line accepts input from the keyboard into
    //variable input_var.
    //cin returns false if an input operation fails, that is, if
    //something other than an int (the type of input_var) is entered.
    if (!(cin >> input_var)) {
      cout << "Please enter numbers only." << endl;
      cin.clear();
      cin.ignore(10000,'\n');
    }
    if (input_var != -1) {
      cout << "You entered " << input_var << endl;
    }
  }
  while (input_var != -1);
  cout << "All done." << endl;

  return 0;
}

Quelle est la signification de cin.clear() et cin.ignore()? Pourquoi les 10000 et \n paramètres nécessaires?

InformationsquelleAutor JacKeown | 2011-02-27