Namespaces
Variants

std::basic_ios<CharT,Traits>:: clear

From cppreference.net

Устанавливает флаги состояния ошибки потока, присваивая им значение state . По умолчанию присваивает std::ios_base::goodbit , что приводит к сбросу всех флагов состояния ошибки.

Если rdbuf() является нулевым указателем (т.е. нет связанного буфера потока), то state | std:: ios_base :: badbit устанавливается.

Содержание

Параметры

state - новые настройки флагов состояния ошибки. Может быть комбинацией следующих констант:
Константа Описание
goodbit отсутствие ошибок
badbit неустранимая ошибка потока
failbit ошибка ввода/вывода (ошибка форматирования или извлечения)
eofbit достигнут конец файла в связанной входной последовательности

Возвращаемое значение

(нет)

Исключения

Если новое состояние ошибки включает бит, который также присутствует в маске 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++.

DR Applied to Behavior as published Correct behavior
LWG 412 C++98 исключение будет выброшено, если текущее состояние ошибки
включает бит, который также включен в маску exceptions()
проверяет новое
состояние ошибки вместо этого

Смотрите также

устанавливает флаги состояния
(публичная функция-член)
возвращает флаги состояния
(публичная функция-член)