73 lines
2.5 KiB
Markdown
73 lines
2.5 KiB
Markdown
[streambuf.virt.pback]
|
||
|
||
# 31 Input/output library [[input.output]](./#input.output)
|
||
|
||
## 31.6 Stream buffers [[stream.buffers]](stream.buffers#streambuf.virt.pback)
|
||
|
||
### 31.6.3 Class template basic_streambuf [[streambuf]](streambuf#virt.pback)
|
||
|
||
#### 31.6.3.5 Virtual functions [[streambuf.virtuals]](streambuf.virtuals#streambuf.virt.pback)
|
||
|
||
#### 31.6.3.5.4 Putback [streambuf.virt.pback]
|
||
|
||
[ð](#lib:pbackfail,basic_streambuf)
|
||
|
||
`int_type pbackfail(int_type c = traits::eof());
|
||
`
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3931)
|
||
|
||
The[*pending sequence*](#def:pending_sequence) is defined as forunderflow(),
|
||
with the modifications that
|
||
|
||
- [(1.1)](#1.1)
|
||
|
||
Iftraits::eq_int_type(c, traits::eof()) returnstrue,
|
||
then the input sequence is backed up one character before the pending sequence is determined[.](#1.1.sentence-1)
|
||
|
||
- [(1.2)](#1.2)
|
||
|
||
Iftraits::eq_int_type(c, traits::eof()) returns false, then c is prepended[.](#1.2.sentence-1)
|
||
Whether the input sequence is backed up or modified in any other way is unspecified[.](#1.2.sentence-2)
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3951)
|
||
|
||
*Postconditions*: On return, the constraints ofgptr(),eback(),
|
||
andpptr() are the same as forunderflow()[.](#2.sentence-1)
|
||
|
||
[3](#3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3961)
|
||
|
||
*Returns*: traits::eof() to indicate failure[.](#3.sentence-1)
|
||
|
||
Failure may occur because the input sequence could not be backed up, or if for some
|
||
other reason the pointers cannot be set consistent with the constraints[.](#3.sentence-2)
|
||
|
||
pbackfail() is called only when put back has really failed[.](#3.sentence-3)
|
||
|
||
[4](#4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3970)
|
||
|
||
Returns some value other thantraits::eof() to indicate success[.](#4.sentence-1)
|
||
|
||
[5](#5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3975)
|
||
|
||
*Default behavior*: Returnstraits::eof()[.](#5.sentence-1)
|
||
|
||
[6](#6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3980)
|
||
|
||
*Remarks*: The public functions ofbasic_streambuf call this virtual function only whengptr() is null,gptr() == eback(),
|
||
ortraits::eq(traits::to_char_type(c), gptr()[-1]) returnsfalse[.](#6.sentence-1)
|
||
|
||
Other calls shall also satisfy that constraint[.](#6.sentence-2)
|