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 |
---|---|
spłukiwać | Opróżnia bufor. |
kłaść | Umieszcza znak w strumieniu. |
seekp | Resetuje położenie w strumieniu wyjściowym. |
wartownik | Klasa zagnieżdżona opisuje obiekt, którego deklaracja tworzy sformatowane funkcje wyjściowe i niesformatowane funkcje wyjściowe. |
zamiana | 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
.
Prawy
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>(rdbuf
getloc
), *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
Prawy
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
_Pos
Pozycja w strumieniu.
_Od
Przesunięcie względem _Way.
_Droga
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 newpos
tymczasowych . 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
wartości zwracane false
i flagi i unitbuf nie sązerowe, destruktor wywołuje opróżnienie.
basic_ostream::swap
Wymienia wartości tego basic_ostream
obiektu dla podanych basic_ostream
wartości .
void swap(basic_ostream& right);
Parametry
Prawy
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