std::basic_ios<CharT,Traits>::clear
From cppreference.com
C++
Input/output library
| I/O manipulators | ||||
| Print functions (C++23) | ||||
| C-style I/O | ||||
| Buffers | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++20) | ||||
| Streams | ||||
| Abstractions | ||||
| File I/O | ||||
| String I/O | ||||
| Array I/O | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
(C++98/26*) | ||||
| Synchronized Output | ||||
(C++20) | ||||
| Types | ||||
| Error category interface | ||||
(C++11) | ||||
(C++11) |
std::basic_ios
| Member functions | ||||
| State functions | ||||
basic_ios::clear | ||||
| Formatting | ||||
| Miscellaneous | ||||
| Protected member functions | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) |
| 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.
Contents |
[edit] Parameters
| state | - | new error state flags setting. It can be a combination of the following constants:
|
[edit] Return value
(none)
[edit] Exceptions
If the new error state includes a bit that is also included in the exceptions() mask, throws an exception of type failure.
[edit] 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
[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 412 | C++98 | an excption would be thrown if the current error state includes a bit that is also included in the exceptions() mask |
checks the new error state instead |
[edit] See also
| sets state flags (public member function) [edit] | |
| returns state flags (public member function) [edit] |