| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed |
| with this work for additional information regarding copyright |
| ownership. The ASF licenses this file to you under the Apache |
| License, Version 2.0 (the License); you may not use this file |
| except in compliance with the License. You may obtain a copy of |
| the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
| implied. See the License for the specific language governing |
| permissions and limitations under the License. |
| |
| Copyright 1999-2007 Rogue Wave Software, Inc. |
| --> |
| |
| <HTML> |
| <HEAD> |
| <TITLE>ostream_iterator</TITLE> |
| <LINK REL=StyleSheet HREF="../rw.css" TYPE="text/css" TITLE="Apache stdcxx Stylesheet"></HEAD> |
| <BODY BGCOLOR=#FFFFFF> |
| <A HREF="ostream-h.html"><IMG SRC="images/bprev.gif" WIDTH=20 HEIGHT=21 ALT="Previous file" BORDER=O></A><A HREF="noframes.html"><IMG SRC="images/btop.gif" WIDTH=56 HEIGHT=21 ALT="Top of Document" BORDER=O></A><A HREF="booktoc.html"><IMG SRC="images/btoc.gif" WIDTH=56 HEIGHT=21 ALT="Contents" BORDER=O></A><A HREF="tindex.html"><IMG SRC="images/bindex.gif" WIDTH=56 HEIGHT=21 ALT="Index page" BORDER=O></A><A HREF="ostreambuf-iterator.html"><IMG SRC="images/bnext.gif" WIDTH=25 HEIGHT=21 ALT="Next file" BORDER=O></A><DIV CLASS="DOCUMENTNAME"><B>Apache C++ Standard Library Reference Guide</B></DIV> |
| <H2>ostream_iterator</H2> |
| <P><B>Library:</B> <A HREF="2-8.html">Iterators</A></P> |
| |
| <PRE><HR><B><I>ostream_iterator</I></B> <IMG SRC="images/inherits.gif"> <B><I><A HREF="iterator.html">iterator</A></I></B> <HR></PRE> |
| |
| <UL> |
| <LI><A HREF="#sec1">Local Index</A></LI> |
| <LI><A HREF="#sec2">Summary</A></LI> |
| <LI><A HREF="#sec3">Synopsis</A></LI> |
| <LI><A HREF="#sec4">Description</A></LI> |
| <LI><A HREF="#sec5">Interface</A></LI> |
| <LI><A HREF="#sec6">Member Types</A></LI> |
| <LI><A HREF="#sec7">Constructors</A></LI> |
| <LI><A HREF="#sec8">Operators</A></LI> |
| <LI><A HREF="#sec9">Example</A></LI> |
| <LI><A HREF="#sec10">See Also</A></LI> |
| <LI><A HREF="#sec11">Standards Conformance</A></LI> |
| </UL> |
| <A NAME="sec1"><H3>Local Index</H3></A> |
| <H4>Members</H4> |
| <UL><TABLE CELLPADDING=3> |
| <TR><TD VALIGN=top> |
| <A HREF="#idx1060">char_type</A><BR> |
| <A HREF="#idx1067">operator*()</A><BR> |
| </TD> |
| <TD VALIGN=top><A HREF="#idx1067">operator++()</A><BR> |
| <A HREF="#idx1066">operator=()</A><BR> |
| </TD> |
| <TD VALIGN=top><A HREF="#idx1063">ostream_iterator()</A><BR> |
| <A HREF="#idx1062">ostream_type</A><BR> |
| </TD> |
| <TD VALIGN=top><A HREF="#idx1061">traits_type</A><BR> |
| </TD></TR> |
| </TABLE></UL> |
| |
| <A NAME="sec2"><H3>Summary</H3></A> |
| <P>Stream iterators allow for use of iterators with ostreams and istreams. They allow generic algorithms to be used directly on streams.</P> |
| <A NAME="sec3"><H3>Synopsis</H3></A> |
| |
| <PRE>#include <ostream> |
| |
| namespace std { |
| template <class T, class charT, |
| class traits = char_traits<charT> > |
| class ostream_iterator; |
| } |
| </PRE> |
| <A NAME="sec4"><H3>Description</H3></A> |
| <P>Stream iterators use the standard iterator interface for input and output streams.</P> |
| <P>The class template <B><I>ostream_iterator</I></B> writes elements to an output stream. If you use the constructor that has a second argument, then that string is written after every element (the string must be null-terminated). Since an ostream iterator is an output iterator, it is not possible to dereference values through the iterator. You can only assign to it.</P> |
| <A NAME="sec5"><H3>Interface</H3></A> |
| |
| <UL><PRE>namespace std { |
| |
| template <class T, class charT = char, |
| class traits = char_traits<charT> > |
| class ostream_iterator: |
| public iterator<output_iterator_tag,void,void,void,void> |
| { |
| public: |
| typedef T value_type; |
| typedef charT char_type; |
| typedef traits traits_type; |
| typedef basic_ostream<charT,traits> ostream_type; |
| |
| ostream_iterator(ostream_type&); |
| ostream_iterator(ostream_type&, const char_type*); |
| ostream_iterator(const ostream_iterator&); |
| |
| ostream_iterator& operator=(const T&); |
| ostream_iterator& operator*() const; |
| ostream_iterator& operator++(); |
| ostream_iterator operator++(int); |
| }; |
| } |
| </PRE></UL> |
| <A NAME="sec6"><H3>Member Types</H3></A> |
| |
| <A NAME="idx1060"></A><PRE><B>char_type</B>; </PRE> |
| <UL> |
| <P>Type of character the stream is built on.</P> |
| </UL> |
| |
| |
| <A NAME="idx1061"></A><PRE><B>traits_type</B>; </PRE> |
| <UL> |
| <P>Traits used to build the stream.</P> |
| </UL> |
| |
| |
| <A NAME="idx1062"></A><PRE><B>ostream_type</B>; </PRE> |
| <UL> |
| <P>Type of stream this iterator is constructed on.</P> |
| </UL> |
| |
| <A NAME="sec7"><H3>Constructors</H3></A> |
| |
| <A NAME="idx1063"></A><PRE><B>ostream_iterator</B> (ostream_type& s);</PRE> |
| <UL> |
| <P>Constructs an <B><I>ostream_iterator</I></B> on the given stream.</P> |
| </UL> |
| |
| |
| <A NAME="idx1064"></A><PRE><B>ostream_iterator</B> (ostream_type& s, |
| const char_type* delimiter);</PRE> |
| <UL> |
| <P>Constructs an <B><I>ostream_iterator</I></B> on the given stream. The null terminated string <SAMP>delimiter</SAMP> is written to the stream after every element.</P> |
| </UL> |
| |
| |
| <A NAME="idx1065"></A><PRE><B>ostream_iterator</B> (const ostream_iterator& x);</PRE> |
| <UL> |
| <P> Copy constructor.</P> |
| </UL> |
| |
| <A NAME="sec8"><H3>Operators</H3></A> |
| |
| <A NAME="idx1066"></A><PRE>const T& <br><B>operator= </B>(const T& value);</PRE> |
| <UL> |
| <P> Insert <SAMP>value</SAMP> into the associated output stream <SAMP>x</SAMP> by calling <SAMP>x << value</SAMP>.</P> |
| </UL> |
| |
| |
| <A NAME="idx1067"></A><PRE>const T& ostream_iterator& |
| <B>operator*</B> (); |
| ostream_iterator& |
| <B>operator++</B>(); |
| ostream_iterator |
| <B>operator++ </B>(int);</PRE> |
| <UL> |
| <P>These operators do nothing. They simply allow the iterator to be used in common constructs.</P> |
| </UL> |
| |
| <A NAME="sec9"><H3>Example</H3></A> |
| |
| <UL><PRE> #include <iterator> |
| #include <numeric> |
| #include <deque> |
| #include <iostream> |
| using namespace std; |
| |
| int main () |
| { |
| // |
| // Initialize a vector using an array. |
| // |
| int arr[4] = { 3,4,7,8 }; |
| int total=0; |
| deque<int> d(arr+0, arr+4); |
| // |
| // stream the whole vector and a sum to cout |
| // |
| copy(d.begin(),d.end()-1, |
| <B>ostream_iterator</B><int,char>(cout," + ")); |
| cout << *(d.end()-1) << " = " << |
| accumulate(d.begin(),d.end(),total) << endl; |
| return 0; |
| } |
| </PRE></UL> |
| <A NAME="sec10"><H3>See Also</H3></A> |
| <P><B><I><A HREF="istream-iterator.html">istream_iterator</A></I></B>, <A HREF="iterators.html">Iterators</A></P> |
| <A NAME="sec11"><H3>Standards Conformance</H3></A> |
| <P><I>ISO/IEC 14882:1998 -- International Standard for Information Systems -- Programming Language C++, Section 24.5.2</I></P> |
| |
| <BR> |
| <HR> |
| <A HREF="ostream-h.html"><IMG SRC="images/bprev.gif" WIDTH=20 HEIGHT=21 ALT="Previous file" BORDER=O></A><A HREF="noframes.html"><IMG SRC="images/btop.gif" WIDTH=56 HEIGHT=21 ALT="Top of Document" BORDER=O></A><A HREF="booktoc.html"><IMG SRC="images/btoc.gif" WIDTH=56 HEIGHT=21 ALT="Contents" BORDER=O></A><A HREF="tindex.html"><IMG SRC="images/bindex.gif" WIDTH=56 HEIGHT=21 ALT="Index page" BORDER=O></A><A HREF="ostreambuf-iterator.html"><IMG SRC="images/bnext.gif" WIDTH=20 HEIGHT=21 ALT="Next file" BORDER=O></A> |
| |
| <!-- Google Analytics tracking code --> |
| <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"> |
| </script> |
| <script type="text/javascript"> |
| _uacct = "UA-1775151-1"; |
| urchinTracker(); |
| </script> |
| <!-- end of Google Analytics tracking code --> |
| |
| </BODY> |
| </HTML> |