Spec-Zone.ru › C++

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 - новое значение флагов состояния ошибки. Оно может быть комбинацией следующих констант:
Константа Пояснение
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++.

Отчёт об ошибке Применён к Опубликованное поведение Корректное поведение
LWG 412 C++98 исключение выбрасывалось, если текущее состояние
ошибки содержит бит, который также включён в маску exceptions()
проверяется новое
состояние ошибки

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_ios/clear

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API