Sdílet prostřednictvím


basic_ostream – třída

Tato šablona třídy popisuje objekt, který řídí vkládání prvků a kódované objekty do vyrovnávací paměti datového proudu s prvky typu Elem, označované také jako char_type, jejichž znakové vlastnosti jsou určeny třídou Tr, také známé jako traits_type.

Syntaxe

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

Parametry

Elem
Úloha char_type.

Tr
traits_typeZnak .

Poznámky

Většina členských funkcí, které operátor přetížení jsou << formátované výstupní funkce. Řídí se vzorem:

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

Dvě další členské funkce jsou neformátované výstupní funkce. Řídí se vzorem:

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

Obě skupiny funkcí volají setstate(badbit), pokud při vkládání prvků dojde k selhání.

Objekt třídy basic_istream<Elem, Tr> ukládá pouze virtuální veřejný základní objekt třídy basic_ios<Elem, Tr.>

Příklad

Další informace o výstupních datových proudech najdete v příkladu třídy basic_ofstream .

Konstruktory

Konstruktor Popis
basic_ostream basic_ostream Vytvoří objekt.

Členské funkce

Členová funkce Popis
Flush Vyprázdní vyrovnávací paměť.
Dát Vloží znak do datového proudu.
seekp Obnoví pozici ve výstupním datovém proudu.
Sentry Vnořená třída popisuje objekt, jehož deklarace strukturuje formátované výstupní funkce a neformátované výstupní funkce.
Swap Vymění hodnoty tohoto basic_ostream objektu basic_ostream pro zadané objekty.
tellp Pozice sestav ve výstupním datovém proudu
write Vloží znaky do datového proudu.

Operátory

Operátor Popis
operator= Přiřadí k tomuto objektu hodnotu zadaného basic_ostream parametru objektu.
operator<< Zapisuje se do datového proudu.

Požadavky

Header:<ostream>

Obor názvů: std

basic_ostream::basic_ostream

basic_ostream Vytvoří objekt.

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

basic_ostream(basic_ostream&& right);

Parametry

strbuf
Objekt typu basic_streambuf.

_Isstd
truepokud se jedná o standardní datový proud; v opačném případě . false

Právo
Odkaz rvalue na objekt typu basic_ostream.

Poznámky

První konstruktor inicializuje základní třídu voláním init(strbuf). Druhý konstruktor inicializuje základní třídu voláním basic_ios::move(right).

Příklad

Další informace o výstupních datových proudech najdete v příkladu pro basic_ofstream::basic_ofstream .

basic_ostream::flush

Vyprázdní vyrovnávací paměť.

basic_ostream<Elem, Tr>& flush();

Vrácená hodnota

Odkaz na objekt basic_ostream.

Poznámky

Pokud rdbuf není nulový ukazatel, funkce volá rdbuf-pubsync>. Pokud vrátí hodnotu -1, funkce volá setstate(badbit). Vrátí *to.

Příklad

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

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

basic_ostream::operator<<

Zapisuje se do datového proudu.

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

Parametry

Pfn
Ukazatel funkce.

strbuf
Ukazatel na stream_buf objekt.

Val
Prvek pro zápis do datového proudu.

Vrácená hodnota

Odkaz na objekt basic_ostream.

Poznámky

Hlavička <ostream> také definuje několik globálních operátorů vložení. Další informace naleznete v operátoru<<.

První členská funkce zajišťuje, že výraz volání formuláře ostr << endl endl(ostr) a poté vrátí *this. Druhé a třetí funkce zajišťují, aby se ostatní manipulátory, jako je šestnáctkový, chovaly podobně. Zbývající funkce jsou všechny formátované výstupní funkce.

Funkci

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

extrahuje prvky z strbuf, pokud strbuf není nulový ukazatel a vloží je. Extrakce se zastaví na konci souboru nebo pokud extrahování vyvolá výjimku (která se znovu vyvolá). Zastaví se také bez extrahování daného prvku, pokud se vložení nezdaří. Pokud funkce vloží žádné prvky nebo pokud extrahování vyvolá výjimku, funkce volá setstate(failbit). V každém případě funkce vrátí *this.

Funkci

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

_Val převede na logické pole a vloží ho voláním use_facet<num_put<Elem, OutIt(>getloc). put(OutIt(rdbuf), *this, getloc, val). OutIt Zde je definován jako ostreambuf_iterator<Elem, Tr.> Funkce vrátí *this.

Funkce

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

každý převede hodnotu na číselné pole a vloží ho voláním use_facet<num_put<Elem, OutIt>(getloc). put(OutIt(rdbuf), *this, getloc, val). Zde je OutIt definován jako ostreambuf_iterator<Elem, Tr>. Funkce vrátí *this.

Funkce

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

každý převede hodnotu na číselné pole a vloží ji voláním use_facet<num_put<Elem, OutIt(getloc). put(OutIt>(rdbuf), *this, getloc, val). Zde je OutIt definován jako ostreambuf_iterator<Elem, Tr>. Funkce vrátí *this.

Příklad

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

Přiřadí k tomuto objektu hodnoty zadaného basic_ostream parametru objektu.

basic_ostream& operator=(basic_ostream&& right);

Parametry

Právo
Odkaz rvalue na basic_ostream objekt.

Poznámky

Operátor člena volá swap (right).

basic_ostream::p ut

Vloží znak do datového proudu.

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

Parametry

_Ch
Znak.

Vrácená hodnota

Odkaz na objekt basic_ostream.

Poznámky

Neformátovaná výstupní funkce vloží prvek _Ch. Vrátí *to.

Příklad

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

Resetovat pozici ve výstupním datovém proudu

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

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

Parametry

_Pos
Pozice v datovém proudu.

_Off
Posun vzhledem k _Way.

_Způsob
Jeden z ios_base::seekdir výčty.

Vrácená hodnota

Odkaz na objekt basic_ostream.

Poznámky

Pokud je chyba false , první člen funkce volá newpos =rdbuf-pubseekpos>(_Pos), pro nějaký pos_type dočasný objekt .newpos Pokud fail je false, druhá funkce volá newpos = rdbuf-pubseekoff>(_Off; _Way). V obou případech pokud (off_type)newpos == ()(off_type)(-1) (operace umístění selže), pak funkce volá istr.setstate(failbit). Obě funkce vrátí *this.

Příklad

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

Vnořená třída popisuje objekt, jehož deklarace strukturuje formátované výstupní funkce a neformátované výstupní funkce.

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

Poznámky

Vnořená třída popisuje objekt, jehož deklarace strukturuje formátované výstupní funkce a neformátované výstupní funkce. Pokud ostr.dobrá je true a ostr.tie není nulový ukazatel, konstruktor volá ostr.tie-flush>. Konstruktor pak uloží hodnotu vrácenou ostr.good v status. Pozdější volání, které operator bool tuto uloženou hodnotu doručí.

Pokud uncaught_exception vrátí false a příznak&unitbuf je nenulový, destruktor volá vyprázdnění.

basic_ostream::swap

Vymění hodnoty tohoto basic_ostream objektu pro hodnoty poskytnutého basic_ostreamobjektu .

void swap(basic_ostream& right);

Parametry

Právo
Odkaz na basic_ostream objekt.

Poznámky

Členová funkce volá basic_ios::swap(right) za účelem výměny obsahu tohoto objektu pro obsah práva.

basic_ostream::tellp

Umístění sestavy ve výstupním datovém proudu

pos_type tellp();

Vrácená hodnota

Pozice ve výstupním datovém proudu

Poznámky

V případě selhání false vrátí členová funkce rdbuf-pubseekoff>(0, curin). V opačném případě se vrátí pos_type(-1).

Příklad

Podívejte se na hledání příkladu pomocí příkazu tellp.

basic_ostream::write

Vložte znaky do datového proudu.

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

Parametry

count
Počet znaků, které se mají vložit do datového proudu

Str
Znaky, které se mají vložit do datového proudu.

Vrácená hodnota

Odkaz na objekt basic_ostream.

Poznámky

Neformátovaná výstupní funkce vloží sekvenci prvků počtu začínajících na str.

Příklad

Podívejte se na streamsize příkladu pomocí write.

Viz také

Bezpečný přístup z více vláken ve standardní knihovně C++
iostream – programování
iostreams – konvence