Namespaces
Variants

C++ named requirements: FormattedInputFunction

From cppreference.net
C++ named requirements

Требования

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

  • Создает объект типа basic_istream::sentry с автоматической продолжительностью хранения и с аргументом noskipws установленным в false , который выполняет следующее:
  • Если eofbit или badbit установлены во входном потоке, также устанавливает failbit , и если исключения для failbit включены в маске исключений этого входного потока exception mask ( ( exceptions ( ) & failbit ) ! = 0 ), генерирует исключение ios_base::failure .
  • Сбрасывает буфер связанного выходного потока (tie()'d output stream), если применимо.
  • Если флаг 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 .
  • В любом случае, независимо от завершения через исключение или возврата, деструктор часового вызывается перед выходом из этой функции.

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

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

Отчёты о дефектах

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

DR Applied to Behavior as published Correct behavior
LWG 160 C++98 процесс определения, перевыбрасывается ли перехваченное исключение
упоминал несуществующую функцию exception()
исправлено на exceptions()