table of contents
std::basic_filebuf::pbackfail(3) | C++ Standard Libary | std::basic_filebuf::pbackfail(3) |
NAME¶
std::basic_filebuf::pbackfail - std::basic_filebuf::pbackfail
Synopsis¶
protected:
virtual int_type pbackfail( int_type c = Traits::eof() )
This protected virtual function is called by the public functions
basic_streambuf::sungetc and basic_streambuf::sputbackc (which, in turn, are
called
by basic_istream::unget and basic_istream::putback).
1) The caller is requesting that the get area is backed up by one character
(pbackfail() is called with no arguments), in which case, this function
re-reads the
file starting one byte earlier and decrements basic_streambuf::gptr(), e.g.
by
calling gbump(-1).
2) The caller attempts to putback a different character from the one
retrieved
earlier (pbackfail() is called with the character that needs to be put back),
in
which case
a) First, checks if there is a putback position, and if there isn't, backs up
the
get area by re-reading the file starting one byte earlier.
a) Then checks what character is in the putback position. If the character
held
there is already equal to c, as determined by Traits::eq(to_char_type(c),
gptr()[-1]), then simply decrements basic_streambuf::gptr().
b) Otherwise, if the buffer is allowed to modify its own get area, decrements
basic_streambuf::gptr() and writes c to the location pointed to gptr() after
adjustment.
This function never modifies the file, only the get area of the in-memory
buffer.
If the file is not open (is_open()==false, this function returns
Traits::eof()
immediately.
Parameters¶
c - the character to put back, or Traits::eof() to indicate that
backing up of the
get area is requested
Return value¶
c on success except if c was Traits::eof(), in which case
Traits::not_eof(c) is
returned.
Traits::eof() on failure.
Example¶
This section is incomplete
Reason: no example
See also¶
puts a character back into the input sequence, possibly modifying
the
pbackfail input sequence
[virtual] (virtual protected member function of
std::basic_streambuf<CharT,Traits>)
sungetc moves the next pointer in the input sequence back by one
(public member function of std::basic_streambuf<CharT,Traits>)
sputbackc puts one character back in the input sequence
(public member function of std::basic_streambuf<CharT,Traits>)
unget unextracts a character
(public member function of std::basic_istream<CharT,Traits>)
putback puts a character into input stream
(public member function of std::basic_istream<CharT,Traits>)
Category:¶
* Todo no example
2024.06.10 | http://cppreference.com |