Each formatted input function begins execution by constructing
an object of type
ios_base::iostate, termed the local error state, and
initializing it to
ios_base::goodbit. It then creates an object of class
sentry
with the
noskipws
(second) argument
false. If the
sentry
object returns
true,
when converted to a value of type
bool,
the function endeavors
to obtain the requested input
. Otherwise,
if the
sentry constructor exits by throwing an exception or
if the
sentry object produces
false
when converted to a value of type
bool,
the function returns without attempting to obtain any input
. If
rdbuf()->sbumpc() or
rdbuf()->sgetc()
returns
traits::eof(), then
ios_base::eofbit is set in the local error state and
the input function stops trying to obtain the requested input
. If an exception is thrown during input then
ios_base::badbit is set in the local error state,
*this's error state is set to the local error state, and
the exception is rethrown if
(exceptions() & badbit) != 0. After extraction is done, the input function calls
setstate, which
sets
*this's error state to the local error state, and
may throw an exception
. In any case, the formatted input function destroys the
sentry
object
. If no exception has been thrown, it returns
*this.