Spec-Zone.ru › C++

C++ именованные требования: FormattedInputFunction

Требования

FormattedInputFunction — это функция ввода потока, которая выполняет следующее:

  • Создаёт объект типа basic_istream::sentry со сроком жизни автоматической длительности и с аргументом noskipws, установленным в false, который выполняет следующее:
  • Если eofbit или badbit установлены в потоке ввода, устанавливает также failbit, и если исключения по failbit включены в маске исключений этого потока ввода (маска исключений) ((exceptions() & failbit) != 0), выбрасывает ios_base::failure.
  • Очищает связанный поток вывода, если применимо.
  • Если флаг ios_base::skipws установлен в этом потоке ввода, извлекает и отбрасывает символы из потока ввода до тех пор, пока одно из следующих утверждений не станет истинным:
    • следующий доступный символ в потоке ввода не является символом пробела, как проверяется фасетом std::ctype локале, текущей для этого потока ввода. Символ пробела не извлекается.
    • достигнут конец потока, в этом случае устанавливаются failbit и eofbit, и если исключения по одному из этих битов включены, выбрасывается ios_base::failure.
  • Проверяет состояние семантической точки, вызывая sentry::operator bool(), что эквивалентно basic_ios::good.
  • Если семантическая точка возвращает false или конструктор семантической точки сгенерировал исключение, ввод не выполняется.
  • Если семантическая точка возвращает true, выполняет ввод, как если бы вызывались rdbuf()->sbumpc() или rdbuf()->sgetc().
    • если достигнут конец потока (вызов rdbuf()->sbumpc() или rdbuf()->sgetc() возвращает Traits::eof()), устанавливается eofbit. Если исключения по eofbit включены в маске исключений этого потока (маска исключений) ((exceptions() & eofbit) != 0), выбрасывается ios_base::failure.
    • если при вводе было сгенерировано исключение, устанавливается badbit в потоке ввода. Если исключения по badbit включены в маске исключений этого потока (маска исключений) ((exceptions() & badbit) != 0), исключение также перевыбрасывается.
    • Если исключение не было сгенерировано, возвращает *this.
  • В любом случае, завершаясь исключением или возвратом, деструктор семантической точки вызывается до завершения этой функции.

Стандартная библиотека

Следующие функции стандартной библиотеки являются FormattedInputFunctions.

  • basic_istream::operator>>(int, long, double, void*, bool)
  • operator>>(std::basic_istream, char&)
  • operator>>(std::basic_istream, char*)
  • operator>>(std::basic_istream, std::bitset)
  • operator>>(std::basic_istream, std::string)
  • operator>>, когда вызывается на возвращаемом значении std::get_money

Отчеты об ошибках

Следующие отчеты об ошибках, меняющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применимо к Поведение, как опубликовано Корректное поведение
LWG 160 C++98 процесс определения, перевыбрасывается ли пойманное исключение,
упоминал несуществующую функцию exception()
исправлено на exceptions()

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/named_req/FormattedInputFunction

Spec-Zone.ru

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