The interface to reading characters from a stream buffer is a little bit more complex (Table 15.43)
because for input, it is necessary to have a look at a character without consuming it. Also, it is
desirable that characters can be put back into the stream buffer when parsing. Thus, the stream
buffer classes provide corresponding functions.