Dela via


basic_ostream-klass

Den här klassmallen beskriver ett objekt som styr infogning av element och kodade objekt i en strömbuffert med element av typen Elem, även kallat char_type, vars karaktärsdrag bestäms av klassen Tr, även kallat traits_type.

Syntax

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

Parameterar

Elem
En char_type.

Tr
Tecknet traits_type.

Anmärkningar

De flesta medlemsfunktioner som överbelastar operatorn<< är formaterade utdatafunktioner. De följer mönstret:

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);

Två andra medlemsfunktioner är oformaterade utdatafunktioner. De följer mönstret:

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);

Båda grupperna av funktioner anropar setstate(badbit) om de stöter på ett fel när element infogas.

< är ett objekt av klass basic_istream> och lagrar endast ett virtuellt offentligt basobjekt av klass basic_ios<Elem, Tr>.

Exempel

Mer information om utdataströmmar finns i exemplet för basic_ofstream-klass .

Konstruktörer

Konstruktor Beskrivning
basic_ostream Konstruerar ett basic_ostream objekt.

Medlemsfunktioner

Medlemsfunktion Beskrivning
spola Tömer bufferten.
lägga Placerar ett tecken i en ström.
seekp Återställer position i utdataströmmen.
vaktpost Den kapslade klassen beskriver ett objekt vars deklaration strukturerar de formaterade utdatafunktionerna och de oformaterade utdatafunktionerna.
växla Utbyter värdena för det här basic_ostream objektet för det angivna basic_ostream objektet.
tellp Rapporterar position i utdataströmmen.
skriva Placerar tecken i en ström.

Operatörer

Operatör Beskrivning
operator= Tilldelar värdet för den angivna basic_ostream objektparametern till det här objektet.
operatör<< Skriver till strömmen.

Kravspecifikation

Rubrik:<ostream>

namnområde: std

basic_ostream::basic_ostream

Konstruerar ett basic_ostream objekt.

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

basic_ostream(basic_ostream&& right);

Parameterar

strbuf
Ett objekt av typen basic_streambuf.

_Isstd
trueom detta är en standardström; annars . false

rätt
En rvalue-referens till ett objekt av typen basic_ostream.

Anmärkningar

Den första konstruktorn initierar basklassen genom att anropa init(strbuf). Den andra konstruktorn initierar basklassen genom att anropa basic_ios::move(right).

Exempel

Mer information om utdataströmmar finns i exemplet för basic_ofstream::basic_ofstream .

basic_ostream::flush

Tömer bufferten.

basic_ostream<Elem, Tr>& flush();

Returvärde

En referens till det basic_ostream objektet.

Anmärkningar

Om rdbuf inte är en null-pekare anropar funktionen rdbuf-pubsync>. Om det returnerar -1 anropar funktionen setstate(badbit). Den returnerar *detta.

Exempel

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

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

basic_ostream::operator<<

Skriver till strömmen.

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);

Parameterar

Pfn
En funktionspekare.

strbuf
En pekare till ett stream_buf objekt.

val
Ett element som ska skrivas till dataströmmen.

Returvärde

En referens till det basic_ostream objektet.

Anmärkningar

Ostream-huvudet <> definierar också flera globala infogningsoperatorer. Mer information finns i operatorn<<.

Den första medlemsfunktionen säkerställer att ett uttryck i formuläret ostr << endl anropar endl(ostr) och sedan returnerar *detta. Den andra och tredje funktionen säkerställer att andra manipulatorer, till exempel hex, beter sig på samma sätt. De återstående funktionerna är alla formaterade utdatafunktioner.

Funktionen

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

extraherar element från strbuf, om strbuf inte är en null-pekare och infogar dem. Extrahering stoppas i slutet av filen, eller om ett extrahering utlöser ett undantag (som är återväxt). Det stoppar också, utan att extrahera det aktuella elementet, om en infogning misslyckas. Om funktionen inte infogar några element, eller om ett extrahering utlöser ett undantag, anropar funktionen setstate(failbit). I vilket fall som helst returnerar funktionen *detta.

Funktionen

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

konverterar _Val till ett booleskt fält och infogar det genom att anropa use_facet<num_put<Elem, OutIt>(getloc). put(OutIt(rdbuf), *this, getloc, val). OutIt Här definieras som ostreambuf_iterator<Elem, Tr>. Funktionen returnerar *detta.

Funktionerna

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);

konvertera val till ett numeriskt fält och infoga det genom att anropa use_facet<num_put<Elem, OutIt>(getloc). put(OutIt(rdbuf), *this, getloc, val). Här definieras OutIt som ostreambuf_iterator<Elem, Tr>. Funktionen returnerar *detta.

Funktionerna

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

konvertera val till ett numeriskt fält och infoga det genom att anropa use_facet<num_put<Elem, OutIt>(getloc). put(OutIt(rdbuf), *this, getloc, val). Här definieras OutIt som ostreambuf_iterator<Elem, Tr>. Funktionen returnerar *detta.

Exempel

// 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=

Tilldelar värden för den angivna basic_ostream objektparametern till det här objektet.

basic_ostream& operator=(basic_ostream&& right);

Parameterar

rätt
En rvalue referens till ett basic_ostream objekt.

Anmärkningar

Medlemsoperatorn anropar växling (right).

basic_ostream::p ut

Placerar ett tecken i en ström.

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

Parameterar

_Ch
Ett tecken.

Returvärde

En referens till det basic_ostream objektet.

Anmärkningar

Den oformaterade utdatafunktionen infogar elementet _Ch. Den returnerar *detta.

Exempel

// 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

Återställ position i utdataströmmen.

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

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

Parameterar

_Pos
Positionen i strömmen.

_Bort
Förskjutningen i förhållande till _Way.

_Väg
En av de ios_base::seekdir uppräkningar.

Returvärde

En referens till det basic_ostream objektet.

Anmärkningar

Om misslyckas anropar falseden första medlemsfunktionen newpos =rdbuf-pubseekpos>(_Pos) för ett pos_type tillfälligt objekt .newpos Om fail är false anropar den andra funktionen newpos = rdbuf-pubseekoff>(_Off, _Way). I båda fallen, om (off_type)newpos == (off_type)(-1) (positioneringsåtgärden misslyckas), anropar funktionen istr.setstate(failbit). Båda funktionerna returnerar *detta.

Exempel

// 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

Den kapslade klassen beskriver ett objekt vars deklaration strukturerar de formaterade utdatafunktionerna och de oformaterade utdatafunktionerna.

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

Anmärkningar

Den kapslade klassen beskriver ett objekt vars deklaration strukturerar de formaterade utdatafunktionerna och de oformaterade utdatafunktionerna. Om ostr.bra är true och ostr.tie är inte en null-pekare, konstruktorn anropar ostr.tie-flush>. Konstruktorn lagrar sedan värdet som returneras av ostr.good i status. Ett senare anrop för att operator bool leverera det här lagrade värdet.

Om uncaught_exception returnerar false och flaggor&unitbuf inte är noll anropar destruatorn tömning.

basic_ostream::swap

Byter värden för det här basic_ostream objektet mot värdena för den angivna basic_ostream.

void swap(basic_ostream& right);

Parameterar

rätt
En referens till ett basic_ostream objekt.

Anmärkningar

Medlemsfunktionen anropar basic_ios::swap(right) för att utbyta innehållet i det här objektet mot innehållet i rättigheten.

basic_ostream::tellp

Rapportposition i utdataströmmen.

pos_type tellp();

Returvärde

Position i utdataströmmen.

Anmärkningar

Om misslyckasfalsereturnerar medlemsfunktionen rdbuf-pubseekoff>(0, cur, in). Annars returneras pos_type(-1).

Exempel

Se seekp för ett exempel med hjälp av tellp.

basic_ostream::write

Placera tecken i en ström.

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

Parameterar

antal
Antal tecken som ska placeras i strömmen.

Str
Tecken som ska placeras i strömmen.

Returvärde

En referens till det basic_ostream objektet.

Anmärkningar

Den oformaterade utdatafunktionen infogar sekvensen med antal element som börjar på str.

Exempel

Se streamsize för ett exempel med .write

Se även

Trådsäkerhet i C++ Standard Library
iostream-programmering
iostreams-konventioner