ostreambuf_iterator Class

Die Klassenvorlage ostreambuf_iterator beschreibt ein Ausgabe iteratorobjekt, das aufeinander folgende Zeichenelemente in den Ausgabedatenstrom mit dem Extraktionsoperator >>schreibt. Die ostreambuf_iterator unterscheiden sich von denen der ostream_iterator-Klasse insofern, als dass sie über Zeichen anstelle eines generischen Typs im Hinblick auf den Objekttyp verfügen, der in den Ausgabestream eingefügt wird.

Syntax

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

Parameter

Chartype
Der Typ, der den Zeichentyp für das ostreambuf_iterator-Objekt darstellt. Dieses Argument ist optional, und der Standardwert ist char.

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

Hinweise

Die ostreambuf_iterator-Klasse muss den Anforderungen für einen Ausgabeiterator entsprechen. Algorithmen können mit ostreambuf_iterator direkt in Ausgabestreams geschrieben werden. Die Klasse bietet einen Streamiterator auf niedriger Ebene, der Zugriff auf den unformatierten E/A-Stream in Form von Zeichen und die Fähigkeit erlaubt, die Pufferung und die Zeichenumsetzungen zu umgehen, die mit den Streamiteratoren auf hoher Ebene verbunden sind.

Konstruktoren

Konstruktor Beschreibung
ostreambuf_iterator Erstellt einen ostreambuf_iterator, der zum Schreiben von Zeichen in den Ausgabestream initialisiert wird.

TypeDefs

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

Memberfunktionen

Memberfunktion Beschreibung
fehlgeschlagen Testet eine Einfügung in den Ausgabestreampuffer auf Fehler.

Operatoren

Operator Beschreibung
operator* Der Dereferenzierungsoperator, der zum Implementieren des Ausgabeiteratorausdrucks *i = x verwendet wird.
operator++ Ein nicht funktionaler Inkrementoperator, der einen ostreambuf_iterator zum gleichen Objekt zurückgibt, das er adressiert hat, bevor der Vorgang aufgerufen wurde.
operator= Der Operator fügt ein Zeichen in den zugeordneten Streampuffer ein.

Anforderungen

Header:<iterator>

Namespace: std

ostreambuf_iterator::char_type

Ein Typ, der für den Zeichentyp von ostreambuf_iterator bereitgestellt wird.

typedef CharType char_type;

Hinweise

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

Beispiel

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

int main( )
{
   using namespace std;

   typedef ostreambuf_iterator<char>::char_type CHT1;
   typedef ostreambuf_iterator<char>::traits_type CHTR1;

   // ostreambuf_iterator for stream cout
   // with new line delimiter:
    ostreambuf_iterator< CHT1, CHTR1> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output streambuf:
   cout << "The characters written to the output stream\n"
        << " by charOutBuf are: ";
*charOutBuf = 'O';
   charOutBuf++;
*charOutBuf = 'U';
   charOutBuf++;
*charOutBuf = 'T';
   charOutBuf++;
   cout << "." << endl;
}
/* Output:
The characters written to the output stream
by charOutBuf are: OUT.
*/

ostreambuf_iterator::failed

Testet eine Einfügung in den Ausgabestreampuffer auf Fehler.

bool failed() const throw();

Rückgabewert

true wenn zuvor kein Einfügen in den Ausgabedatenstrompuffer fehlgeschlagen ist; andernfalls false.

Hinweise

Die Memberfunktion gibt zurück true , wenn in einer früheren Verwendung von Member operator=der Aufruf von subf_->sputc zurückgegebene eof.

Beispiel

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

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   ostreambuf_iterator<char> charOut ( cout );

*charOut = 'a';
   charOut ++;
*charOut  = 'b';
   charOut ++;
*charOut = 'c';
   cout << " are characters output individually." << endl;

   bool b1 = charOut.failed ( );
   if (b1)
       cout << "At least one insertion failed." << endl;
   else
       cout << "No insertions failed." << endl;
}
/* Output:
abc are characters output individually.
No insertions failed.
*/

ostreambuf_iterator::operator*

Ein nicht funktionsfähiger Dereferencing-Operator, der zum Implementieren des Ausgabe iteratorausdrucks * i = x verwendet wird.

ostreambuf_iterator<CharType, Traits>& operator*();

Rückgabewert

Das ostreambuf-Iteratorobjekt.

Hinweise

Dieser Operator funktioniert nur im Ausgabe iteratorausdruck * i = x, um Zeichen für den Datenstrompuffer auszugeben. Wird auf einen ostreambuf Iterator angewendet, gibt er den Iterator zurück; *iter returns iter,

Beispiel

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

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   // with new line delimiter
   ostreambuf_iterator<char> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
   charOutBuf++;   // no effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/

ostreambuf_iterator::operator++

Ein nicht funktionaler Inkrementoperator, der einen ostream-Iterator zum gleichen Zeichen zurückgibt, das er adressiert hat, bevor der Vorgang aufgerufen wurde.

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

Rückgabewert

Ein Verweis auf das ursprünglich adressierte Zeichen oder auf ein implementierungsdefiniertes Objekt, das in ostreambuf_iterator<CharType, Traits> konvertierbar ist.

Hinweise

Der Operator wird verwendet, um den Ausgabe iteratorausdruck * i = x zu implementieren.

Beispiel

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

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   // with new line delimiter
   ostreambuf_iterator<char> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
   charOutBuf++;      // No effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/

ostreambuf_iterator::operator=

Der Operator fügt ein Zeichen in den zugeordneten Streampuffer ein.

ostreambuf_iterator<CharType, Traits>& operator=(CharType _Char);

Parameter

_Char
Das in den Streampuffer einzufügende Zeichen.

Rückgabewert

Ein Verweis auf das in den Streampuffer eingefügte Zeichen.

Hinweise

Zuordnungsoperator zum Implementieren des Ausgabe iteratorausdrucks * i = x zum Schreiben in einen Ausgabedatenstrom.

Beispiel

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

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   // with new line delimiter
   ostreambuf_iterator<char> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output stream
   cout << "Elements written to output stream:" << endl;
*charOutBuf = 'O';
   charOutBuf++;      // No effect on iterator position
*charOutBuf = 'U';
*charOutBuf = 'T';
}
/* Output:
Elements written to output stream:
OUT
*/

ostreambuf_iterator::ostreambuf_iterator

Erstellt einen ostreambuf_iterator, der zum Schreiben von Zeichen in den Ausgabestream initialisiert wird.

ostreambuf_iterator(streambuf_type* strbuf) throw();
ostreambuf_iterator(ostream_type& Ostr) throw();

Parameter

strbuf
Das zur Initialiserung des Ausgabestreampufferzeigers verwendete streambuf-Ausgabeobjekt.

Ostr
Das zur Initialiserung des Ausgabestreampufferzeigers verwendete Streamausgabeobjekt.

Hinweise

Der erste Konstruktor initialisiert den Ausgabedatenstrompufferzeiger mit strbuf.

Der zweite Konstruktor initialisiert den Zeiger auf den Ausgabestreampuffer mit Ostr. rdbuf. Der gespeicherte Zeiger darf kein NULL-Zeiger sein.

Beispiel

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

int main( )
{
   using namespace std;

   // ostreambuf_iterator for stream cout
   ostreambuf_iterator<char> charOut ( cout );

*charOut = 'O';
   charOut ++;
*charOut  = 'U';
   charOut ++;
*charOut = 'T';
   cout << " are characters output individually." << endl;

   ostreambuf_iterator<char> strOut ( cout );
   string str = "These characters are being written to the output stream.\n ";
   copy ( str.begin ( ), str. end ( ), strOut );
}
/* Output:
OUT are characters output individually.
These characters are being written to the output stream.
*/

ostreambuf_iterator::ostream_type

Ein Typ, der für den Streamtyp von ostream_iterator bereitgestellt wird.

typedef basicOstream<CharType, Traits> ostream_type;

Hinweise

Der Typ ist ein Synonym für basicOstream<CharType, Traits>

Beispiel

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

ostreambuf_iterator::streambuf_type

Ein Typ, der für den Streamtyp von ostreambuf_iterator bereitgestellt wird.

typedef basic_streambuf<CharType, Traits> streambuf_type;

Hinweise

Der Typ ist ein Synonym für basic_streambuf<CharType, Traits>, eine Datenstromklasse für E/A-Puffer, die sich auf den Zeichentyp charspezialisiert habenstreambuf.

Beispiel

Unter ostreambuf_iterator finden Sie ein Beispiel für das Deklarieren und Verwenden von streambuf_type.

ostreambuf_iterator::traits_type

Ein Typ, der für den Merkmaltyp von ostream_iterator bereitgestellt wird.

typedef Traits traits_type;

Hinweise

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

Beispiel

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

int main( )
{
   using namespace std;

   typedef ostreambuf_iterator<char>::char_type CHT1;
   typedef ostreambuf_iterator<char>::traits_type CHTR1;

   // ostreambuf_iterator for stream cout
   // with new line delimiter:
    ostreambuf_iterator< CHT1, CHTR1> charOutBuf ( cout );

   // Standard iterator interface for writing
   // elements to the output streambuf:
   cout << "The characters written to the output stream\n"
        << " by charOutBuf are: ";
*charOutBuf = 'O';
   charOutBuf++;
*charOutBuf = 'U';
   charOutBuf++;
*charOutBuf = 'T';
   charOutBuf++;
   cout << "." << endl;
}
/* Output:
The characters written to the output stream
by charOutBuf are: OUT.
*/

Siehe auch

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