std::basic_ios::clear(3)

NAME
std::basic_ios::clear - std::basic_ios::clear

Synopsis
   void clear( std::ios_base::iostate state = std::ios_base::goodbit );
   Sets the stream error state flags by assigning them the value of state. By default,
   assigns std::ios_base::goodbit which has the effect of clearing all error state
   flags.
   If rdbuf() is a null pointer (i.e. there is no associated stream buffer), then state
   | std::ios_base::badbit is assigned.

Parameters
           new error state flags setting. It can be a combination of the following
           constants:
   state - Constant Explanation
           goodbit no error
           badbit irrecoverable stream error
           failbit input/output operation failed (formatting or extraction error)
           eofbit associated input sequence has reached end-of-file

Return value
   (none)

Exceptions
   If the new error state includes a bit that is also included in the exceptions()
   mask, throws an exception of type failure.

Example
   clear() without arguments can be used to unset the failbit after unexpected input;
   for std::cin.putback(c) see ungetc. // Run this code
 #include <iostream>
 #include <string>
 int main()
 {
     for (char c : {'\n', '4', '1', '.', '3', '\n', 'Z', 'Y', 'X'})
         std::cin.putback(c); // emulate user's input (not portable: see ungetc Notes)
     double n;
     while (std::cout << "Please, enter a number: " && !(std::cin >> n))
     {
         std::cin.clear();
         std::string line;
         std::getline(std::cin, line);
         std::cout << line << "\nI am sorry, but '" << line << "' is not a number\n";
     }
     std::cout << n << "\nThank you for entering the number " << n << '\n';
 }

Output:
 Please, enter a number: XYZ
 I am sorry, but 'XYZ' is not a number
 Please, enter a number: 3.14
 Thank you for entering the number 3.14
   Defect reports
   The following behavior-changing defect reports were applied retroactively to
   previously published C++ standards.
     DR Applied to Behavior as published Correct behavior
                      an excption would be thrown if the current
   LWG 412 C++98 error state checks the new
                      includes a bit that is also included in the error state instead
                      exceptions() mask

See also
   setstate sets state flags
            (public member function)
   rdstate returns state flags
            (public member function)