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 CharType
dar.
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_iterator
Objekt 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 Traits
dar.
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