STD::ISTREAMBUF_ITERATOR(3cxx)
π NAME
bestie, you're looking at std::istreambuf_iterator< _CharT, _Traits > from the 3cxx manual, and its whole job is literally: Provides input iterator semantics for streambufs. That's the name tea, no cap. π
β¨ SYNOPSIS
#include <iterator>
It inherits std::iterator< input_iterator_tag, _CharT, _Traits::off_type, _CharT *, _CharT > β yes, that whole little family tree. π
π Public Types
typedef _Traits::off_type difference_typeβ the distance between iterators is represented as this type. It's the gap-o-meter, basically.typedef input_iterator_tag iterator_categoryβ one of the tag types. Periodt.typedef _CharT referenceβ this type represents a reference-to-value_type.typedef _CharT value_typeβ the type 'pointed to' by the iterator.
And the public typedefs squad, under the same umbrella:
using pointer = voidβ public typedefs.typedef _CharT char_typeβ public typedefs.typedef _Traits traits_typeβ public typedefs.typedef _Traits::int_type int_typeβ public typedefs.typedef basic_streambuf< _CharT, _Traits > streambuf_typeβ public typedefs.typedef basic_istream< _CharT, _Traits > istream_typeβ public typedefs.
π Public Member Functions
constexpr istreambuf_iterator () noexceptβ constructs the end-of-input-stream iterator. The classic "I'm done here" vibe.istreambuf_iterator (const istreambuf_iterator &) noexcept=defaultβ defaulted, no extra lore on the page.istreambuf_iterator (istream_type &__s) noexceptβ constructs the start-of-input-stream iterator from__s.istreambuf_iterator (streambuf_type *__s) noexceptβ constructs the start-of-streambuf iterator from__s.bool equal (const istreambuf_iterator &__b) constβ returnstruewhen both iterators are end or both are not end. Matching energy check. β¨char_type operator* () constβ returns the current character pointed to by iterator. This returnsstreambuf.sgetc(). It cannot be assigned. NB: the result ofoperator*()on an end of stream is undefined β so bestie, do not dereference an end iterator, that's undefined behavior territory. πistreambuf_iterator & operator++ ()β advances the iterator. Callsstreambuf.sbumpc().istreambuf_iterator operator++ (int)β advances the iterator. Callsstreambuf.sbumpc().istreambuf_iterator & operator= (const istreambuf_iterator &) noexcept=defaultβ defaulted, no extra lore on the page.
π Friends
The friend squad is very template-coded, very __gnu_cxx::__enable_if, very iykyk:
template<bool _IsMove, typename _CharT2 > __gnu_cxx::__enable_if< __is_char< _CharT2 >::__value, _CharT2 * >::__type __copy_move_a2 (istreambuf_iterator< _CharT2 >, istreambuf_iterator< _CharT2 >, _CharT2 *)template<typename _CharT2 , typename _Size > __gnu_cxx::__enable_if< __is_char< _CharT2 >::__value, _CharT2 * >::__type __copy_n_a (istreambuf_iterator< _CharT2 >, _Size, _CharT2 *, bool)template<typename _CharT2 , typename _Distance > __gnu_cxx::__enable_if< __is_char< _CharT2 >::__value, void >::__type advance (istreambuf_iterator< _CharT2 > &, _Distance)template<typename _CharT2 > __gnu_cxx::__enable_if< __is_char< _CharT2 >::__value, ostreambuf_iterator< _CharT2 > >::__type copy (istreambuf_iterator< _CharT2 >, istreambuf_iterator< _CharT2 >, ostreambuf_iterator< _CharT2 >)template<typename _CharT2 > __gnu_cxx::__enable_if< __is_char< _CharT2 >::__value, istreambuf_iterator< _CharT2 > >::__type find (istreambuf_iterator< _CharT2 >, istreambuf_iterator< _CharT2 >, const _CharT2 &)
π Detailed Description
Template tea, served fresh:
template<typename _CharT, typename _Traits>
class std::istreambuf_iterator< _CharT, _Traits >"Provides input
iterator semantics for streambufs.
So yeah β it's an input iterator situation for streambufs. Streambufs are the main character here, and this iterator is their hype squad. π¦
π Member Typedef Documentation
char_typeβtemplate<typename _CharT , typename _Traits > typedef _CharT std::istreambuf_iterator< _CharT, _Traits >::char_type. Public typedefs.difference_type[inherited] βtypedef _Traits::off_type std::iterator< input_iterator_tag , _CharT , _Traits::off_type , _CharT * , _CharT >::difference_type [inherited]. Distance between iterators is represented as this type.int_typeβtemplate<typename _CharT , typename _Traits > typedef _Traits::int_type std::istreambuf_iterator< _CharT, _Traits >::int_type. Public typedefs.istream_typeβtemplate<typename _CharT , typename _Traits > typedef basic_istream<_CharT, _Traits> std::istreambuf_iterator< _CharT, _Traits >::istream_type. Public typedefs.iterator_category[inherited] βtypedef input_iterator_tag std::iterator< input_iterator_tag , _CharT , _Traits::off_type , _CharT * , _CharT >::iterator_category [inherited]. One of the tag types.pointerβtemplate<typename _CharT , typename _Traits > using std::istreambuf_iterator< _CharT, _Traits >::pointer = void. Public typedefs.reference[inherited] βtypedef _CharT std::iterator< input_iterator_tag , _CharT , _Traits::off_type , _CharT * , _CharT >::reference [inherited]. This type represents a reference-to-value_type.streambuf_typeβtemplate<typename _CharT , typename _Traits > typedef basic_streambuf<_CharT, _Traits> std::istreambuf_iterator< _CharT, _Traits >::streambuf_type. Public typedefs.traits_typeβtemplate<typename _CharT , typename _Traits > typedef _Traits std::istreambuf_iterator< _CharT, _Traits >::traits_type. Public typedefs.value_type[inherited] βtypedef _CharT std::iterator< input_iterator_tag , _CharT , _Traits::off_type , _CharT * , _CharT >::value_type [inherited]. The type 'pointed to' by the iterator.
π οΈ Constructor & Destructor Documentation
template<typename _CharT , typename _Traits > constexpr std::istreambuf_iterator< _CharT, _Traits >::istreambuf_iterator () [inline], [constexpr], [noexcept]β constructs end of input stream iterator.template<typename _CharT , typename _Traits > std::istreambuf_iterator< _CharT, _Traits >::istreambuf_iterator (istream_type & __s) [inline], [noexcept]β constructs start of input stream iterator.template<typename _CharT , typename _Traits > std::istreambuf_iterator< _CharT, _Traits >::istreambuf_iterator (streambuf_type * __s) [inline], [noexcept]β constructs start of streambuf iterator.
π₯ Member Function Documentation
template<typename _CharT , typename _Traits > bool std::istreambuf_iterator< _CharT, _Traits >::equal (const istreambuf_iterator< _CharT, _Traits > & __b) const [inline]β returnstruewhen both iterators are end or both are not end.template<typename _CharT , typename _Traits > char_type std::istreambuf_iterator< _CharT, _Traits >::operator* () const [inline]β returns the current character pointed to by iterator. This returnsstreambuf.sgetc(). It cannot be assigned. NB: the result ofoperator*()on an end of stream is undefined. Do not do it, bestie, that's undefined behavior, fr fr. πtemplate<typename _CharT , typename _Traits > istreambuf_iterator & std::istreambuf_iterator< _CharT, _Traits >::operator++ () [inline]β advances the iterator. Callsstreambuf.sbumpc().template<typename _CharT , typename _Traits > istreambuf_iterator std::istreambuf_iterator< _CharT, _Traits >::operator++ (int) [inline]β advances the iterator. Callsstreambuf.sbumpc().
π Author
Yep: Generated automatically by Doxygen for libstdc++ from the source code. No human author to tag, just Doxygen doing its thing. π«Ά
Source/version tea: libstdc++, manual name 3cxx, and the date isn't printed on this page, so I'm not inventing one, bestie. This page was generated automatically by Doxygen for libstdc++ from the source code. Bye bestie, go read some streambufs πβ¨π
π¦ where this page comes from
- ubuntu noble: libstdc++-14-doc 14-20240412-0ubuntu1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms