C++ named requirements: FormattedInputFunction
From cppreference.net
Требования
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 .
-
Если
eofbit
или
badbit
установлены во входном потоке, также устанавливает
-
Проверяет статус сторожа, вызывая
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 .
-
если достигнут конец потока (вызов
rdbuf
(
)
-
>
sbumpc
(
)
или
rdbuf
(
)
-
>
sgetc
(
)
возвращает
Traits
::
eof
(
)
), устанавливает
- В любом случае, независимо от завершения через исключение или возврата, деструктор часового вызывается перед выходом из этой функции.
Стандартная библиотека
Следующие стандартные библиотечные функции являются FormattedInputFunction s .
- 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 | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 160 | C++98 |
процесс определения, перевыбрасывается ли перехваченное исключение
упоминал несуществующую функцию
exception()
|
исправлено на exceptions() |