C++
迭代器 | Iterator

std::ostreambuf_iterator

STD::OStreambuf[医]迭代器

Defined in header
template< class CharT, class Traits = std::char_traits<CharT> > class ostreambuf_iterator : public std::iterator<std::output_iterator_tag, void, void, void, void>(until C++17)
template< class CharT, class Traits = std::char_traits<CharT> > class ostreambuf_iterator;(since C++17)

std::ostreambuf_iterator是一次过OutputIterator将连续字符写入std::basic_streambuf对象,它是为其构造的。当迭代器%28(不管是否取消引用)分配给%29时,将执行实际的写操作。递增std::ostreambuf_iterator是个禁止行动。

在典型的实现中,std::ostreambuf_iterator是指向关联std::basic_streambuf和一个布尔标志,指示是否达到了文件结束条件。

成员类型

Member typeDefinition
char_typeCharT
traits_typeTraits
streambuf_typestd::basic_streambuf<CharT, Traits>
ostream_typestd::basic_ostream<CharT, Traits>

成员函数

(constructor)constructs a new ostreambuf_iterator (public member function)
(destructor) (implicitly declared)destructs an ostreambuf_iterator (public member function)
operator=writes a character to the associated output sequence (public member function)
operator*no-op (public member function)
operator++operator++(int)no-op (public member function)
failedtests if output failed (public member function)

成员类型

Member typeDefinition
value_typevoid
difference_typevoid
pointervoid
referencevoid
iterator_categorystd::output_iterator_tag

注意:在C++17之前,这些成员类型必须通过从std::iterator<std::output_iterator_tag,void,void,void,void>...

二次

#include <string> #include <algorithm> #include <iterator> #include <iostream> int main() { std::string s = "This is an example\n"; std::copy(s.begin(), s.end(), std::ostreambuf_iterator<char>(std::cout) }

二次

产出:

二次

This is an example

二次

另见

istreambuf_iteratorinput iterator that reads from std::basic_streambuf (class template)
ostream_iteratoroutput iterator that writes to std::basic_ostream (class template)

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/iterator/oStreambuf[医]迭代器