namespace std {
template <class charT, class traits = char_traits<charT>>
class ostreambuf_iterator {
public:
using iterator_category = output_iterator_tag;
using value_type = void;
using difference_type = void;
using pointer = void;
using reference = void;
using char_type = charT;
using traits_type = traits;
using streambuf_type = basic_streambuf<charT,traits>;
using ostream_type = basic_ostream<charT,traits>;
ostreambuf_iterator(ostream_type& s) noexcept;
ostreambuf_iterator(streambuf_type* s) noexcept;
ostreambuf_iterator& operator=(charT c);
ostreambuf_iterator& operator*();
ostreambuf_iterator& operator++();
ostreambuf_iterator& operator++(int);
bool failed() const noexcept;
private:
streambuf_type* sbuf_; };
}
The
class template
ostreambuf_iterator
writes successive
characters
onto the output stream from which it was constructed
. It is not possible to get a character value out of the output iterator
.ostreambuf_iterator(ostream_type& s) noexcept;
Requires:
s.rdbuf()
shall not be a null pointer
. Effects:
Initializes
sbuf_ with
s.rdbuf(). ostreambuf_iterator(streambuf_type* s) noexcept;
Requires:
s
shall not be a null pointer
. Effects:
Initializes
sbuf_ with
s. ostreambuf_iterator& operator=(charT c);
Effects:
If
failed()
yields
false,
calls
sbuf_->sputc(c);
otherwise has no effect
. ostreambuf_iterator& operator*();
ostreambuf_iterator& operator++();
ostreambuf_iterator& operator++(int);
bool failed() const noexcept;
Returns:
true
if in any prior use of member
operator=,
the call to
sbuf_->sputc()
returned
traits::eof();
or
false
otherwise
.