Defined in header <iterator> | ||
---|---|---|
template< class T, class CharT = char, class Traits = std::char_traits<CharT> > class ostream_iterator : public std::iterator<std::output_iterator_tag, void, void, void, void> | (until C++17) | |
template< class T, class CharT = char, class Traits = std::char_traits<CharT>> class ostream_iterator; | (since C++17) |
std::ostream_iterator
is a single-pass OutputIterator
that writes successive objects of type T
into the std::basic_ostream
object for which it was constructed, using operator<<
. Optional delimiter string is written to the output stream after every write operation. The write operation is performed when the iterator (whether dereferenced or not) is assigned to. Incrementing the std::ostream_iterator
is a no-op.
In a typical implementation, the only data members of std::ostream_iterator
are a pointer to the associated std::basic_ostream
and a pointer to the first character in the delimiter string.
When writing characters, std::ostreambuf_iterator
is more efficient, since it avoids the overhead of constructing and destructing the sentry object once per character.
Member type | Definition |
---|---|
char_type | CharT |
traits_type | Traits |
ostream_type | std::basic_ostream<CharT, Traits> |
constructs a new ostream_iterator (public member function) |
|
destructs an ostream_iterator (public member function) |
|
writes a object to the associated output sequence (public member function) |
|
no-op (public member function) |
|
no-op (public member function) |
Member type | Definition |
---|---|
value_type | void |
difference_type | void |
pointer | void |
reference | void |
iterator_category | std::output_iterator_tag |
Note: before C++17, these member types are required to be obtained by inheriting from std::iterator<std::output_iterator_tag,void,void,void,void>
.
#include <iostream> #include <sstream> #include <iterator> #include <numeric> int main() { std::istringstream str("0.1 0.2 0.3 0.4"); std::partial_sum(std::istream_iterator<double>(str), std::istream_iterator<double>(), std::ostream_iterator<double>(std::cout, " ")); }
Output:
0.1 0.3 0.6 1
output iterator that writes to std::basic_streambuf (class template) |
|
input iterator that reads from std::basic_istream (class template) |
|
(library fundamentals TS v2) | An output iterator that writes successive elements into an output stream, separating adjacent elements with a delimiter (class template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/iterator/ostream_iterator