[streambuf.pub.pback]

# 31 Input/output library [[input.output]](./#input.output)

## 31.6 Stream buffers [[stream.buffers]](stream.buffers#streambuf.pub.pback)

### 31.6.3 Class template basic_streambuf [[streambuf]](streambuf#pub.pback)

#### 31.6.3.3 Public member functions [[streambuf.members]](streambuf.members#streambuf.pub.pback)

#### 31.6.3.3.4 Putback [streambuf.pub.pback]

[ð](#lib:sputbackc,basic_streambuf)

`int_type sputbackc(char_type c);
`

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3358)

*Effects*: If the input sequence putback position is not available, or
iftraits​::​eq(c, gptr()[-1]) is false, returnspbackfail(traits​::​to_int_type(c))[.](#1.sentence-1)

Otherwise, decrements the next pointer for the input sequence and
returnstraits​::​to_int_type(*gptr())[.](#1.sentence-2)

[ð](#lib:sungetc,basic_streambuf)

`int_type sungetc();
`

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3376)

*Effects*: If the input sequence putback position is not available,
returnspbackfail()[.](#2.sentence-1)

Otherwise, decrements the next pointer for the input sequence and
returnstraits​::​to_int_type(*gptr())[.](#2.sentence-2)
