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 β€” returns true when 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 returns streambuf.sgetc(). It cannot be assigned. NB: the result of operator*() 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. Calls streambuf.sbumpc().
  • istreambuf_iterator operator++ (int) β€” advances the iterator. Calls streambuf.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] β€” returns true when 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 returns streambuf.sgetc(). It cannot be assigned. NB: the result of operator*() 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. Calls streambuf.sbumpc().
  • template<typename _CharT , typename _Traits > istreambuf_iterator std::istreambuf_iterator< _CharT, _Traits >::operator++ (int) [inline] β€” advances the iterator. Calls streambuf.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