Spec-Zone.ru › C++

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

Требования

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

  • Создаёт объект типа basic_istream::sentry с автоматическим временем хранения и аргументом noskipws, равным false, который выполняет следующие действия:
  • если во входном потоке установлены eofbit или badbit, устанавливает также failbit, а если в маске исключений этого входного потока включены исключения для failbit ((exceptions() & failbit) != 0), выбрасывает ios_base::failure.
  • сбрасывает связанный выходной поток tie(), если применимо.
  • если во входном потоке установлен флаг ios_base::skipws, извлекает и отбрасывает символы из входного потока, пока не выполнится одно из следующих условий:
    • следующий доступный символ во входном потоке не является пробельным символом, что проверяется с помощью фасета std::ctype локали, установленной в этом входном потоке. Непробельный символ не извлекается.
    • достигнут конец потока; в этом случае устанавливаются failbit и eofbit, а если для одного из этих битов в потоке включены исключения, выбрасывается ios_base::failure.
  • Проверяет состояние sentry, вызывая sentry::operator bool(), что эквивалентно basic_ios::good.
  • Если sentry вернул false или его конструктор выбросил исключение, ввод не выполняется.
  • Если sentry вернул 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.
  • В любом случае — при завершении из-за исключения или при возврате — перед выходом из этой функции вызывается деструктор sentry.

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

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

  • 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/cpp/named_req/FormattedInputFunction

Spec-Zone.ru

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