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 CharType
dar.
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
_Verkohlen
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 char
spezialisiert 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 Traits
dar.
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