std::basic_ios<CharT,Traits>::clear
void clear( std::ios_base::iostate state = std::ios_base::goodbit ); |
Устанавливает флаги состояния ошибки потока, присваивая им значение state. По умолчанию присваивается std::ios_base::goodbit, что приводит к сбросу всех флагов состояния ошибки.
Если rdbuf() является нулевым указателем (т. е. связанный буфер потока отсутствует), то присваивается state | std::ios_base::badbit.
Параметры
| state | - | новое значение флагов состояния ошибки. Оно может быть комбинацией следующих констант:
|
Возвращаемое значение
(отсутствует)
Исключения
Если новое состояние ошибки содержит бит, который также включён в маску exceptions(), выбрасывается исключение типа failure.
Пример
clear() без аргументов можно использовать для сброса failbit после неожиданного ввода; сведения о std::cin.putback(c) см. в разделе ungetc.
#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';
}
Вывод:
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
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| Отчёт об ошибке | Применён к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 412 | C++98 | исключение выбрасывалось, если текущее состояние ошибки содержит бит, который также включён в маску exceptions() | проверяется новое состояние ошибки |
См. также
| устанавливает флаги состояния (открытая функция-член) |
|
| возвращает флаги состояния (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_ios/clear