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