[streambuf.put.area] # 31 Input/output library [[input.output]](./#input.output) ## 31.6 Stream buffers [[stream.buffers]](stream.buffers#streambuf.put.area) ### 31.6.3 Class template basic_streambuf [[streambuf]](streambuf#put.area) #### 31.6.3.4 Protected member functions [[streambuf.protected]](streambuf.protected#streambuf.put.area) #### 31.6.3.4.3 Put area access [streambuf.put.area] [🔗](#lib:pbase,basic_streambuf) `char_type* pbase() const; ` [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3528) *Returns*: The beginning pointer for the output sequence[.](#1.sentence-1) [🔗](#lib:pptr,basic_streambuf) `char_type* pptr() const; ` [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3539) *Returns*: The next pointer for the output sequence[.](#2.sentence-1) [🔗](#lib:epptr,basic_streambuf) `char_type* epptr() const; ` [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3550) *Returns*: The end pointer for the output sequence[.](#3.sentence-1) [🔗](#lib:pbump,basic_streambuf) `void pbump(int n); ` [4](#4) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3561) *Effects*: Adds n to the next pointer for the output sequence[.](#4.sentence-1) [🔗](#lib:setp,basic_streambuf) `void setp(char_type* pbeg, char_type* pend); ` [5](#5) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3572) *Preconditions*: [pbeg, pend) is a valid range[.](#5.sentence-1) [6](#6) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/iostreams.tex#L3576) *Postconditions*: pbeg == pbase(),pbeg == pptr(), andpend == epptr() are all true[.](#6.sentence-1)