Even for formatted I/O, it may be reasonable to use stream buffers directly. For example, if many
numeric values are read in a loop, it is sufficient to construct just one sentry object that exists
for the whole time the loop is executed. Then, within the loop, whitespace is skipped manually —
using the ws manipulator would also construct a sentry object — and then the facet num_get (see
Section 16.4.1, page 873) is used for reading the numeric values directly.