basic_ostream — Klasa

Ten szablon klasy opisuje obiekt, który kontroluje wstawienie elementów i zakodowanych obiektów do buforu strumienia z elementami typu Elem, znany również jako char_type, którego cechy znaków są określane przez klasę Tr, znaną również jako traits_type.

Składnia

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

Parametry

Elem
Klasa char_type.

Tr
Znak traits_type.

Uwagi

Większość funkcji składowych, które przeciążają operator<< , są sformatowanymi funkcjami wyjściowymi. Są zgodne ze wzorcem:

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

Dwie inne funkcje składowe to niesformatowane funkcje wyjściowe. Są zgodne ze wzorcem:

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

Obie grupy funkcji wywołają setstate(badbit), jeśli napotkają błąd podczas wstawiania elementów.

Obiekt klasy basic_istream<Elem, Tr> przechowuje tylko wirtualny obiekt bazy publicznej klasy basic_ios<Elem, Tr.>

Przykład

Zobacz przykład dla klasy basic_ofstream, aby dowiedzieć się więcej o strumieniach wyjściowych.

Konstruktory

Konstruktor opis
Basic_ostream basic_ostream Tworzy obiekt.

Funkcje składowe

Funkcja składowa opis
Flush Opróżnia bufor.
Umieścić Umieszcza znak w strumieniu.
seekp Resetuje położenie w strumieniu wyjściowym.
Sentry Klasa zagnieżdżona opisuje obiekt, którego deklaracja tworzy sformatowane funkcje wyjściowe i niesformatowane funkcje wyjściowe.
Wymiany Wymienia wartości tego basic_ostream obiektu dla tych z podanego basic_ostream obiektu.
tellp Pozycja raportów w strumieniu wyjściowym.
write Umieszcza znaki w strumieniu.

Operatory

Operator opis
operator = Przypisuje wartość podanego basic_ostream parametru obiektu do tego obiektu.
operator<< Zapisuje w strumieniu.

Wymagania

Nagłówek:<ostream>

Przestrzeń nazw: std

basic_ostream::basic_ostream

basic_ostream Tworzy obiekt.

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

basic_ostream(basic_ostream&& right);

Parametry

strbuf
Obiekt typu basic_streambuf.

_Isstd
true jeśli jest to standardowy strumień; w przeciwnym razie, false.

Prawo
Odwołanie rvalue do obiektu typu basic_ostream.

Uwagi

Pierwszy konstruktor inicjuje klasę bazową, wywołując metodę init(strbuf). Drugi konstruktor inicjuje klasę bazową, wywołując metodę basic_ios::move(right).

Przykład

Zobacz przykład basic_ofstream ::basic_ofstream , aby dowiedzieć się więcej o strumieniach wyjściowych.

basic_ostream::flush

Opróżnia bufor.

basic_ostream<Elem, Tr>& flush();

Wartość zwracana

Odwołanie do obiektu basic_ostream.

Uwagi

Jeśli rdbuf nie jest wskaźnikiem null, funkcja wywołuje rdbuf-pubsync>. Jeśli zwraca wartość -1, funkcja wywołuje parametr setstate(badbit). Zwraca wartość *.

Przykład

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

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

basic_ostream::operator<<

Zapisuje w strumieniu.

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
Wskaźnik funkcji.

strbuf
Wskaźnik do stream_buf obiektu.

Val
Element do zapisu w strumieniu.

Wartość zwracana

Odwołanie do obiektu basic_ostream.

Uwagi

Nagłówek <Ostream> definiuje również kilka globalnych operatorów wstawiania. Aby uzyskać więcej informacji, zobacz operator<<.

Pierwsza funkcja składowa gwarantuje, że wyrażenie formularza ostr << endl wywołuje metodę endl(ostr), a następnie zwraca wartość *. Drugie i trzecie funkcje zapewniają, że inne manipulatory, takie jak szesnastkowy, zachowują się podobnie. Pozostałe funkcje są sformatowanymi funkcjami wyjściowymi.

Funkcja

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

wyodrębnia elementy ze strbuf, jeśli strbuf nie jest wskaźnikiem o wartości null i wstawia je. Wyodrębnianie zatrzymuje się na końcu pliku lub jeśli wyodrębnianie zgłasza wyjątek (który jest ponownie wprowadzany). Zatrzymuje się również bez wyodrębniania danego elementu, jeśli wstawienie nie powiedzie się. Jeśli funkcja nie wstawia żadnych elementów lub wyodrębnianie zgłasza wyjątek, funkcja wywołuje funkcję setstate(failbit). W każdym razie funkcja zwraca *to.

Funkcja

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

Konwertuje _Val na pole logiczne i wstawia je, wywołując use_facet num_put<<Elem, OutIt(>getloc). put(OutIt(rdbuf), *this, getloc, val). OutIt W tym miejscu zdefiniowano jako ostreambuf_iterator<Elem, Tr.> Funkcja zwraca *to.

Funkcje

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żda wartość konwertuje wartość na pole liczbowe i wstawia je, wywołując use_facet num_put<<Elem, OutIt>(getloc). put(OutIt(rdbuf), *this, getloc, val). Tutaj element OutIt jest definiowany jako ostreambuf_iterator<Elem, Tr>. Funkcja zwraca *to.

Funkcje

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

każda wartość konwertuje wartość na pole liczbowe i wstawia je, wywołując use_facet num_put<<Elem, OutIt(). put(OutIt>(rdbufgetloc), *this, getloc, val). Tutaj element OutIt jest definiowany jako ostreambuf_iterator<Elem, Tr>. Funkcja zwraca *to.

Przykład

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

Przypisuje wartości dla podanego basic_ostream parametru obiektu do tego obiektu.

basic_ostream& operator=(basic_ostream&& right);

Parametry

Prawo
Odwołanie rvalue do basic_ostream obiektu.

Uwagi

Operator elementu członkowskiego wywołuje zamianę (right).

basic_ostream::p ut

Umieszcza znak w strumieniu.

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

Parametry

_Ch
Znak.

Wartość zwracana

Odwołanie do obiektu basic_ostream.

Uwagi

Niesformatowana funkcja wyjściowa wstawia element _Ch. Zwraca wartość *.

Przykład

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

Zresetuj pozycję w strumieniu wyjściowym.

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

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

Parametry

_Poz
Pozycja w strumieniu.

_Off
Przesunięcie względem _Way.

_Sposób
Jeden z ios_base::seekdir, wyliczeń.

Wartość zwracana

Odwołanie do obiektu basic_ostream.

Uwagi

Jeśli niepowodzenie to false, pierwsza funkcja składowa wywołuje newpos =rdbuf-pubseekpos>(_Pos), dla niektórych pos_type obiektów newpostymczasowych . Jeśli fail jest fałsz, druga funkcja wywołuje newpos = rdbuf-pubseekoff>(_Off, _Way). W obu przypadkach, jeśli (off_type)newpos == (off_type)(-1) (operacja pozycjonowania kończy się niepowodzeniem), funkcja wywołuje istr.setstate(failbit). Obie funkcje zwracają *to.

Przykład

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

Klasa zagnieżdżona opisuje obiekt, którego deklaracja tworzy sformatowane funkcje wyjściowe i niesformatowane funkcje wyjściowe.

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

Uwagi

Klasa zagnieżdżona opisuje obiekt, którego deklaracja tworzy sformatowane funkcje wyjściowe i niesformatowane funkcje wyjściowe. Jeśli ostr.dobre jest true i ostr.Krawat nie jest wskaźnikiem o wartości null, konstruktor wywołuje metodę ostr.tie-flush>. Następnie konstruktor przechowuje wartość zwracaną przez ostr.good element w pliku status. Późniejsze wywołanie do operator bool dostarcza tę przechowywaną wartość.

Jeśli uncaught_exception funkcja zwraca false wartości i flagi&unitbuf jest niezerowa, destruktor wywołuje opróżnienie.

basic_ostream::swap

Wymienia wartości tego basic_ostream obiektu dla podanych basic_ostreamwartości .

void swap(basic_ostream& right);

Parametry

Prawo
Odwołanie do basic_ostream obiektu.

Uwagi

Funkcja składowa wywołuje funkcję basic_ios::swap(right) , aby wymienić zawartość tego obiektu na zawartość prawa.

basic_ostream::tellp

Pozycja raportu w strumieniu wyjściowym.

pos_type tellp();

Wartość zwracana

Pozycja w strumieniu wyjściowym.

Uwagi

Jeśli niepowodzenie to false, funkcja składowa zwraca wartość rdbuf-pubseekoff>(0, cur, in). W przeciwnym razie zwraca wartość pos_type(-1).

Przykład

Zobacz ciąg seekp , aby zapoznać się z przykładem przy użyciu polecenia tellp.

basic_ostream::write

Umieść znaki w strumieniu.

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

Parametry

count
Liczba znaków do umieszczenia w strumieniu.

Str
Znaki do umieszczenia w strumieniu.

Wartość zwracana

Odwołanie do obiektu basic_ostream.

Uwagi

Niesformatowana funkcja wyjściowa wstawia sekwencję elementów zliczania rozpoczynających się od ciągu.

Przykład

Zobacz streamsize , aby zapoznać się z przykładem przy użyciu polecenia write.

Zobacz też

Bezpieczeństwo wątku w standardowej bibliotece C++
iostream, programowanie
Konwencje iostream