std::basic_istream<CharT,Traits>:: ignore
|
basic_istream
&
ignore
(
std::
streamsize
count
=
1
, int_type delim
=
Traits
::
eof
(
)
)
;
|
||
Извлекает и отбрасывает символы из входного потока до и включая delim .
ignore
ведёт себя как
UnformattedInputFunction
. После создания и проверки сторожевого объекта, функция извлекает символы из потока и отбрасывает их до наступления любого из следующих условий:
- count символов было извлечено. Этот тест отключен в особом случае, когда count равен std:: numeric_limits < std:: streamsize > :: max ( ) .
- условие конца файла возникает во входной последовательности, в этом случае функция вызывает setstate ( eofbit ) .
- следующий доступный символ c во входной последовательности является delim , что определяется с помощью Traits :: eq_int_type ( Traits :: to_int_type ( c ) , delim ) . Символ-разделитель извлекается и отбрасывается. Эта проверка отключается, если delim равен Traits :: eof ( ) .
Содержание |
Параметры
| count | - | количество символов для извлечения |
| delim | - | символ-разделитель, при котором останавливается извлечение. Также извлекается |
Возвращаемое значение
* this
Исключения
Если внутренняя операция выбрасывает исключение, оно перехватывается и
badbit
устанавливается. Если
exceptions()
установлен для
badbit
, исключение выбрасывается повторно.
Пример
Следующий пример использует
ignore
для пропуска нечислового ввода:
#include <iostream> #include <limits> #include <sstream> constexpr auto max_size = std::numeric_limits<std::streamsize>::max(); int main() { std::istringstream input("1\n" "some non-numeric input\n" "2\n"); for (;;) { int n; input >> n; if (input.eof() || input.bad()) break; else if (input.fail()) { input.clear(); // unset failbit input.ignore(max_size, '\n'); // skip bad input } else std::cout << n << '\n'; } }
Вывод:
1 2
Отчёты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Применяется к | Поведение в опубликованной версии | Корректное поведение |
|---|---|---|---|
| LWG 172 | C++98 | тип count был ошибочно указан как int | исправлен на std::streamsize |
Смотрите также
|
извлекает символы
(public member function) |
|
|
извлекает символы до обнаружения заданного символа
(public member function) |