Namespaces
Variants

std::basic_istream<CharT,Traits>:: ignore

From cppreference.net
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

Исключения

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

Если внутренняя операция выбрасывает исключение, оно перехватывается и 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)