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++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 412 | C++98 |
исключение будет выброшено, если текущее состояние ошибки
включает бит, который также включен в маску exceptions() |
проверяет новое
состояние ошибки вместо этого |
Смотрите также
|
устанавливает флаги состояния
(публичная функция-член) |
|
|
возвращает флаги состояния
(публичная функция-член) |