ostream_iterator-Klasse

Die Klassenvorlage ostream_iterator beschreibt ein Ausgabe iterator-Objekt, das aufeinander folgende Elemente in den Ausgabedatenstrom mit der Extraktion operator <<schreibt.

Syntax

template <class Type class CharType = char class Traits = char_traits <CharType>>
class ostream_iterator

Parameter

Typ
Der Typ des in den Ausgabestream einzufügenden Objekts.

CharType
Der Typ, der den Zeichentyp für ostream_iterator darstellt. Dieses Argument ist optional, und der Standardwert ist char.

Merkmale
Der Typ, der den Zeichentyp für ostream_iterator darstellt. Dieses Argument ist optional, und der Standardwert ist char_traits<CharType>.

Die ostream_iterator-Klasse muss den Anforderungen für einen Ausgabeiterator entsprechen. Algorithmen können mit ostream_iterator direkt in Ausgabestreams geschrieben werden.

Konstruktoren

Konstruktor Beschreibung
ostream_iterator Erstellt einen ostream_iterator, der initialisiert und zum Schreiben in den Ausgabestream begrenzt wird.

TypeDefs

Typname Beschreibung
char_type Ein Typ, der für den Zeichentyp von ostream_iterator bereitgestellt wird.
ostream_type Ein Typ, der für den Streamtyp von ostream_iterator bereitgestellt wird.
traits_type Ein Typ, der für den Merkmaltyp von ostream_iterator bereitgestellt wird.

Operatoren

Operator Beschreibung
operator* Der Dereferenzierungsoperator, der zum Implementieren des Ausgabeiteratorausdrucks *i = x verwendet wird.
operator++ Ein nicht funktionaler Inkrementoperator, der einen ostream_iterator zum gleichen Objekt zurückgibt, das er adressiert hat, bevor der Vorgang aufgerufen wurde.
operator= Ein Zuweisungsoperator, der zum Implementieren des Ausgabeiteratorausdrucks *i = x zum Schreiben in einen Ausgabestream verwendet wird.

Anforderungen

Header:<iterator>

Namespace: std

ostream_iterator::char_type

Ein Typ, der für den Zeichentyp des Iterators bereitgestellt wird.

typedef CharType char_type;

Hinweise

Der Type stellt ein Synonym für den Vorlagenparameter CharTypedar.

Beispiel

// ostream_iterator_char_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   typedef ostream_iterator<int>::char_type CHT1;
   typedef ostream_iterator<int>::traits_type CHTR1;

   // ostream_iterator for stream cout
   // with new line delimiter:
    ostream_iterator<int, CHT1, CHTR1> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream:
   cout << "The integers written to the output stream\n"
        << "by intOut are:" << endl;
*intOut = 10;
*intOut = 20;
*intOut = 30;
}
/* Output:
The integers written to the output stream
by intOut are:
10
20
30
*/

ostream_iterator::operator*

Dereferencing-Operator zum Implementieren des Ausgabe iteratorausdrucks * ii = x.

ostream_iterator<Type, CharType, Traits>& operator*();

Rückgabewert

Ein Verweis auf ostream_iterator.

Hinweise

Die Anforderungen für einen Ausgabe-Iterator, den die ostream_iterator erfüllen müssen, erfordern nur den Ausdruck * ii = t gültig und sagt nichts über das operator oder das operator= allein. Der Memberoperator in dieser Implementierung gibt zurück *this.

Beispiel

// ostream_iterator_op_deref.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   // with new line delimiter
   ostream_iterator<int> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*intOut = 10;
   intOut++;      // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/

ostream_iterator::operator++

Ein nicht funktionaler Inkrementoperator, der einen ostream_iterator zum gleichen Objekt zurückgibt, das er adressiert hat, bevor der Vorgang aufgerufen wurde.

ostream_iterator<Type, CharType, Traits>& operator++();
ostream_iterator<Type, CharType, Traits> operator++(int);

Rückgabewert

Ein Verweis auf ostream_iterator.

Hinweise

Diese Memberoperatoren geben beide zurück *this.

Beispiel

// ostream_iterator_op_incr.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   // with new line delimiter
   ostream_iterator<int> intOut ( cout , "\n" );

   // standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*intOut = 10;
   intOut++;      // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/

ostream_iterator::operator=

Ein Zuweisungsoperator, der zum Implementieren des Ausgabeiteratorausdrucks *i = x zum Schreiben in einen Ausgabestream verwendet wird.

ostream_iterator<Type, CharType, Traits>& operator=(const Type& val);

Parameter

val
Der Wert des Objekts des Type-Typs, der in den Ausgabestream einzufügen ist.

Rückgabewert

Der Operator fügt "val " in den Ausgabedatenstrom ein, der dem Objekt zugeordnet ist, gefolgt von dem im ostream_iterator-Konstruktor angegebenen Trennzeichen (falls vorhanden), und gibt dann einen Verweis auf das ostream_iteratorObjekt zurück.

Hinweise

Die Anforderungen für einen Ausgabeiterator, der ostream_iterator erfüllen muss, benötigen nur den gültigen Ausdruck * ii = t, und sagen nichts über den operator oder den operator= selbst. Dieser Memberoperator gibt *this zurück.

Beispiel

// ostream_iterator_op_assign.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   // with new line delimiter
   ostream_iterator<int> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*intOut = 10;
   intOut++;      // No effect on iterator position
*intOut = 20;
*intOut = 30;
}
/* Output:
Elements written to output stream:
10
20
30
*/

ostream_iterator::ostream_iterator

Erstellt einen ostream_iterator, der initialisiert und zum Schreiben in den Ausgabestream begrenzt wird.

ostream_iterator(
    ostream_type& _Ostr);

ostream_iterator(
    ostream_type& _Ostr,
    const CharType* _Delimiter);

Parameter

_Ostr
Der Ausgabestream vom Typ ostream_iterator:: ostream_type, der eine Schleife durchlaufen wird.

_Trennzeichen
Das Trennzeichen, das in den Ausgabestream zwischen Werten eingefügt wird.

Hinweise

Der erste Konstruktor initialisiert den Ausgabestreamzeiger mit &_Ostr. Der Zeiger für Zeichenfolgentrennzeichen kennzeichnet eine leere Zeichenfolge.

Der zweite Konstruktor initialisiert den Ausgabedatenstromzeiger mit &_Ostr und dem Trennzeichen-Zeichenfolgenzeiger mit _Delimiter.

Beispiel

// ostream_iterator_ostream_iterator.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // ostream_iterator for stream cout
   ostream_iterator<int> intOut ( cout , "\n" );
*intOut = 10;
   intOut++;
*intOut = 20;
   intOut++;

   int i;
   vector<int> vec;
   for ( i = 1 ; i < 7 ; ++i )
   {
      vec.push_back (  i );
   }

   // Write elements to standard output stream
   cout << "Elements output without delimiter: ";
   copy ( vec.begin ( ), vec.end ( ),
          ostream_iterator<int> ( cout ) );
   cout << endl;

   // Write elements with delimiter " : " to output stream
   cout << "Elements output with delimiter: ";
   copy ( vec.begin ( ), vec.end ( ),
          ostream_iterator<int> ( cout, " : " ) );
   cout << endl;
}
/* Output:
10
20
Elements output without delimiter: 123456
Elements output with delimiter: 1 : 2 : 3 : 4 : 5 : 6 :
*/

ostream_iterator::ostream_type

Ein Typ, der für den Streamtyp des Iteraotrs bereitgestellt wird.

typedef basic_ostream<CharType, Traits> ostream_type;

Hinweise

Der Typ ist ein Synonym für basic_ostreamCharType<, Traits>eine Streamklasse der Iostream-Hierarchie, die Objekte definiert, die zum Schreiben verwendet werden können.

Beispiel

Unter ostream_iterator finden Sie ein Beispiel für das Deklarieren und Verwenden von ostream_type.

ostream_iterator::traits_type

Ein Typ, der für den Zeichenmerkmaltyp des Iterators bereitgestellt wird.

typedef Traits traits_type;

Hinweise

Der Type stellt ein Synonym für den Vorlagenparameter Traitsdar.

Beispiel

// ostream_iterator_traits_type.cpp
// compile with: /EHsc
#include <iterator>
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;

   // The following not OK, but are just the default values:
   typedef ostream_iterator<int>::char_type CHT1;
   typedef ostream_iterator<int>::traits_type CHTR1;

   // ostream_iterator for stream cout
   // with new line delimiter:
    ostream_iterator<int, CHT1, CHTR1> intOut ( cout , "\n" );

   // Standard iterator interface for writing
   // elements to the output stream:
   cout << "The integers written to output stream\n"
        << "by intOut are:" << endl;
*intOut = 1;
*intOut = 10;
*intOut = 100;
}
/* Output:
The integers written to output stream
by intOut are:
1
10
100
*/

Siehe auch

<iterator>
Threadsicherheit in der C++-Standardbibliothek
C++-Standardbibliotheksreferenz