basic_ostream-Klasse

Diese Klassenvorlage beschreibt ein Objekt, das das Einfügen von Elementen und codierten Objekten in einen Datenstrompuffer mit Elementen des Typs Elemsteuert, auch bekannt als char_type, dessen Zeicheneigenschaften durch die Klasse Trbestimmt werden , auch als traits_type bezeichnet.

Syntax

template <class Elem, class Tr = char_traits<Elem>>
class basic_ostream : virtual public basic_ios<Elem, Tr>

Parameter

Elem
einen char_type

Tr
Der traits_type eines Zeichens.

Bemerkungen

Die meisten Memberfunktionen, die den Überladungsoperator<< verwenden, sind formatierte Ausgabefunktionen. Sie entsprechen dem folgenden Muster:

iostate state = goodbit;
const sentry ok(*this);

if (ok)
{try
{<convert and insert elements
    accumulate flags in state> }
    catch (...)
{try
{setstate(badbit);

}
    catch (...)
{}
    if ((exceptions()& badbit) != 0)
    throw; }}
width(0);
// Except for operator<<(Elem)
setstate(state);

return (*this);

Zwei weitere Memberfunktionen sind Funktionen für unformatierte Ausgabe. Sie entsprechen dem folgenden Muster:

iostate state = goodbit;
const sentry ok(*this);

if (!ok)
    state |= badbit;
else
{try
{<obtain and insert elements
    accumulate flags in state> }
    catch (...)
{try
{setstate(badbit);

}
    catch (...)
{}
    if ((exceptions()& badbit) != 0)
    throw; }}
setstate(state);

return (*this);

Beide Gruppen von Funktionen rufen setstate(badbit) auf, wenn beim Einfügen von Elementen ein Fehler auftritt.

Ein Objekt der Klasse basic_istream<Elem, Tr> speichert nur ein virtuelles öffentliches Basisobjekt der Klasse basic_ios<Elem, Tr>.

Beispiel

Weitere Informationen zu Ausgabestreams finden Sie im Beispiel für die basic_ofstream-Klasse.

Konstruktoren

Konstruktor BESCHREIBUNG
basic_ostream Erstellt ein basic_ostream-Objekt.

Memberfunktionen

Memberfunktion BESCHREIBUNG
Flush Leert den Puffer.
put Schreibt ein Zeichen in einen Stream.
seekp Setzt die Position im Ausgabestream zurück.
Sentry Die geschachtelte Klasse beschreibt ein Objekt, dessen Deklaration die Funktionen für formatierte Ausgabe und für unformatierte Ausgabe strukturiert.
swap Tauscht die Werte dieses basic_ostream-Objekts gegen die Werte des bereitgestellten basic_ostream-Objekts aus.
tellp Meldet die Position im Ausgabestream.
write Schreibt Zeichen in einen Stream.

Operatoren

Operator Beschreibung
operator= Weist diesem Objekt den Wert des bereitgestellten basic_ostream-Objektparameters zu.
Operator<< Schreibt in den Stream.

Anforderungen

Header:< Ostream>

Namespace: std

basic_ostream::basic_ostream

Erstellt ein basic_ostream-Objekt.

explicit basic_ostream(
    basic_streambuf<Elem, Tr>* strbuf,
    bool _Isstd = false);

basic_ostream(basic_ostream&& right);

Parameter

strbuf
Ein Objekt vom Typ basic_streambuf.

_Isstd
true wenn es sich um einen Standardstream handelt; andernfalls false.

right
Ein rvalue-Verweis auf ein Objekt des Typs basic_ostream.

Bemerkungen

Der erste Konstruktor initialisiert die Basisklasse durch Aufrufen von init(strbuf). Der zweite Konstruktor initialisiert die Basisklasse, indem basic_ios::move(right) aufgerufen wird.

Beispiel

Weitere Informationen zu Ausgabestreams finden Sie im Beispiel für basic_ofstream::basic_ofstream.

basic_ostream::flush

Leert den Puffer.

basic_ostream<Elem, Tr>& flush();

Rückgabewert

Ein Verweis auf das basic_ostream-Objekt.

Bemerkungen

Wenn rdbuf kein Nullzeiger ist, ruft die Funktion rdbuf-pubsync> auf. Wenn -1 zurückgegeben wird, ruft die Funktion setstate ( badbit) auf. Es gibt *this zurück.

Beispiel

// basic_ostream_flush.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
   using namespace std;
   cout << "test";
   cout.flush();
}
test

basic_ostream::operator<<

Schreibt in den Stream.

basic_ostream<Elem, Tr>& operator<<(
    basic_ostream<Elem, Tr>& (* Pfn)(basic_ostream<Elem, Tr>&));

basic_ostream<Elem, Tr>& operator<<(
    ios_base& (* Pfn)(ios_base&));

basic_ostream<Elem, Tr>& operator<<(
    basic_ios<Elem, Tr>& (* Pfn)(basic_ios<Elem, Tr>&));

basic_ostream<Elem, Tr>& operator<<(basic_streambuf<Elem, Tr>* strbuf);
basic_ostream<Elem, Tr>& operator<<(bool val);
basic_ostream<Elem, Tr>& operator<<(short val);
basic_ostream<Elem, Tr>& operator<<(unsigned short val);
basic_ostream<Elem, Tr>& operator<<(int __w64  val);
basic_ostream<Elem, Tr>& operator<<(unsigned int __w64  val);
basic_ostream<Elem, Tr>& operator<<(long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long __w64  val);
basic_ostream<Elem, Tr>& operator<<(long long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long long val);
basic_ostream<Elem, Tr>& operator<<(float val);
basic_ostream<Elem, Tr>& operator<<(double val);
basic_ostream<Elem, Tr>& operator<<(long double val);
basic_ostream<Elem, Tr>& operator<<(const void* val);

Parameter

Pfn
Ein Funktionszeiger.

strbuf
Ein Zeiger auf ein stream_buf-Objekt.

Val
Ein Element, das in den Stream geschrieben werden soll.

Rückgabewert

Ein Verweis auf das basic_ostream-Objekt.

Bemerkungen

Der <ostream-Header> definiert auch mehrere globale Einfügeoperatoren. Weitere Informationen finden Sie im Operator<<.

Die erste Memberfunktion stellt sicher, dass ein Ausdruck des Formulars ostr << endlendl(ostr) aufruft und dann *this zurückgibt. Die zweiten und dritten Funktionen stellen sicher, dass andere Manipulatoren, z.B. hex, sich ähnlich verhalten. Die übrigen Funktionen sind alle formatierte Ausgabefunktionen.

Die Funktion

basic_ostream<Elem, Tr>& operator<<(basic_streambuf<Elem, Tr>* strbuf);

extrahiert Elemente aus strbuf, wenn strbuf kein Nullzeiger ist, und fügt sie ein. Die Extrahierung hält am Ende der Datei an, oder wenn eine Extrahierung eine Ausnahme auslöst (die erneut ausgelöst wird). Sie hält ebenfalls an, ohne das jeweilige Element zu extrahieren, wenn bei einer Einfügung ein Fehler auftritt. Wenn die Funktion kein Element einfügt, oder wenn eine Extahierung eine Ausnahme auslöst, ruft die Funktion setstate(failbit) aus. In jedem Fall gibt die Funktion *this zurück.

Die Funktion

basic_ostream<Elem, Tr>& operator<<(bool val);

_Val konvertiert in ein boolesches Feld und fügt es durch Aufrufen von use_facet<num_put< Elem, OutItgetloc>() ein. put(OutIt(rdbuf), *this, getloc, val). OutIt Hier wird als ostreambuf_iterator<Elem, Tr> definiert. Die Funktion gibt *dies zurück.

Die Funktionen

basic_ostream<Elem, Tr>& operator<<(short val);
basic_ostream<Elem, Tr>& operator<<(unsigned short val);
basic_ostream<Elem, Tr>& operator<<(int val);
basic_ostream<Elem, Tr>& operator<<(unsigned int __w64  val);
basic_ostream<Elem, Tr>& operator<<(long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long val);
basic_ostream<Elem, Tr>& operator<<(long long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long long val);
basic_ostream<Elem, Tr>& operator<<(const void* val);

jedes Konvertieren von Val in ein numerisches Feld und fügt sie ein, indem use_facet num_put Elem, OutIt>() aufgerufen<< wird.getloc put(OutIt(rdbuf), *this, getloc, val). Hier wird OutIt als ostreambuf_iterator< Elem, Tr>. definiert. Die Funktion gibt *dies zurück.

Die Funktionen

basic_ostream<Elem, Tr>& operator<<(float val);
basic_ostream<Elem, Tr>& operator<<(double val);
basic_ostream<Elem, Tr>& operator<<(long double val);

jedes Konvertieren von Val in ein numerisches Feld und einfügen sie durch Aufrufen von use_facet<< num_put Elem, OutIt(). put(OutIt>(getlocrdbuf), *this, getlocval). Hier wird OutIt als ostreambuf_iterator< Elem, Tr>. definiert. Die Funktion gibt *dies zurück.

Beispiel

// basic_ostream_op_write.cpp
// compile with: /EHsc
#include <iostream>
#include <string.h>

using namespace std;

ios_base& hex2( ios_base& ib )
{
   ib.unsetf( ios_base::dec );
   ib.setf( ios_base::hex );
   return ib;
}

basic_ostream<char, char_traits<char> >& somefunc(basic_ostream<char, char_traits<char> > &i)
{
    if (i == cout)
    {
        i << "i is cout" << endl;
    }
    return i;
}

class CTxtStreambuf : public basic_streambuf< char, char_traits< char > >
{
public:
    CTxtStreambuf(char *_pszText)
    {
        pszText = _pszText;
        setg(pszText, pszText, pszText + strlen(pszText));
    };
    char *pszText;
};

int main()
{
    cout << somefunc;
    cout << 21 << endl;

    hex2(cout);
    cout << 21 << endl;

    CTxtStreambuf f("text in streambuf");
    cout << &f << endl;
}

basic_ostream::operator=

Weist diesem Objekt Werte für den bereitgestellten basic_ostream-Objektparameter zu.

basic_ostream& operator=(basic_ostream&& right);

Parameter

right
Ein rvalue-Verweis auf ein basic_ostream-Objekt.

Bemerkungen

Der Memberoperator ruft swap (right) auf.

basic_ostream::put

Schreibt ein Zeichen in einen Stream.

basic_ostream<Elem, Tr>& put(char_type _Ch);

Parameter

_Ch
Ein Zeichen.

Rückgabewert

Ein Verweis auf das basic_ostream-Objekt.

Bemerkungen

Die nicht formatierte Ausgabefunktion fügt das Element _Ch ein. Es gibt *dies zurück.

Beispiel

// basic_ostream_put.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
   using namespace std;
   cout.put( 'v' );
   cout << endl;
   wcout.put( L'l' );
}
v
l

basic_ostream::seekp

Setzt die Position im Ausgabestream zurück.

basic_ostream<Elem, Tr>& seekp(pos_type _Pos);

basic_ostream<Elem, Tr>& seekp(off_type _Off, ios_base::seekdir _Way);

Parameter

_Pos
Die Position im Stream.

_Off
Der Offset relativ zu _Way.

_Way
Eine der ios_base::seekdir-Enumerationen.

Rückgabewert

Ein Verweis auf das basic_ostream-Objekt.

Bemerkungen

Wenn fehlerfalseist, ruft die erste Memberfunktion newpos =rdbuf-pubseekpos>(_Pos) für ein pos_type temporäres Objekt newposauf. Wenn fail falsch ist, ruft die zweite Funktion newpos = rdbuf-pubseekoff>(_Off, _Way) auf. Falls ()newpos == (off_type)(-1) (off_typeder Positionierungsvorgang fehlschlägt), ruft die Funktion einen Fehler auf.setstate(failbit). Beide Funktionen geben *dies zurück.

Beispiel

// basic_ostream_seekp.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>

int main()
{
    using namespace std;
    ofstream x("basic_ostream_seekp.txt");
    streamoff i = x.tellp();
    cout << i << endl;
    x << "testing";
    i = x.tellp();
    cout << i << endl;
    x.seekp(2);   // Put char in third char position in file
    x << " ";

    x.seekp(2, ios::end);   // Put char two after end of file
    x << "z";
}
0
7

basic_ostream::sentry

Die geschachtelte Klasse beschreibt ein Objekt, dessen Deklaration die Funktionen für formatierte Ausgabe und für unformatierte Ausgabe strukturiert.

class sentry { public: explizit sentry(basic_ostream Elem, Tr>& _Ostr<); operator bool() const; ~sentry(); };

Bemerkungen

Die geschachtelte Klasse beschreibt ein Objekt, dessen Deklaration die Funktionen für formatierte Ausgabe und für unformatierte Ausgabe strukturiert. Wenn ostr.gut ist true und ostr.tie ist kein Nullzeiger, der Konstruktor ruft ostr.tie-flush> auf. Der Konstruktor speichert dann den von ostr.good in status. Ein späterer Aufruf, um operator bool diesen gespeicherten Wert zu liefern.

Wenn uncaught_exception rückgaben false und flagsunitbuf& nonzero sind, ruft der Destructor flush auf.

basic_ostream::swap

Tauscht die Werte dieses basic_ostream-Objekts gegen die Werte des bereitgestellten basic_ostream-Objekts aus.

void swap(basic_ostream& right);

Parameter

right
Ein Verweis auf ein basic_ostream-Objekt.

Bemerkungen

Die Memberfunktion ruft basic_ios::Swap(right) auf, um den Inhalt dieses Objekts für den Inhalt des Rechts zu austauschen.

basic_ostream::tellp

Meldet die Position im Ausgabestream.

pos_type tellp();

Rückgabewert

Position im Ausgabestream.

Bemerkungen

Wenn fehlerfalseist, gibt die Memberfunktion rdbuf-pubseekoff>(0, curin) zurück. Andernfalls wird pos_type(-1) zurückgegeben.

Beispiel

Ein Beispiel für die Verwendung von tellp finden Sie unter seekp.

basic_ostream::write

Schreibt Zeichen in einen Stream.

basic_ostream<Elem, Tr>& write(const char_type* str, streamsize count);

Parameter

count
Die Anzahl der Zeichen, die in den Stream geschrieben werden sollen.

str
Die Zeichen, die in den Stream geschrieben werden sollen.

Rückgabewert

Ein Verweis auf das basic_ostream-Objekt.

Bemerkungen

Die nicht formatierte Ausgabefunktion fügt die Reihenfolge der Anzahlelemente ein, die bei str beginnen.

Beispiel

Ein Beispiel für die Verwendung von write finden Sie unter streamsize.

Weitere Informationen

Threadsicherheit in der C++-Standardbibliothek
iostream-Programmierung
iostreams-Konventionen