Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
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. |
| pisać | Umieszcza znaki w strumieniu. |
Operatory
| Obsługujący | 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 >. 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 <<>
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 (<<), >, , getloc
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 newpostymczasowych . Jeśli fail jest fałsz, druga funkcja wywołuje >pubseekoff(_Off, _Way). W obu przypadkach, jeśli (off_type)newpos ==(-1) (operacja pozycjonowania kończy się niepowodzeniem), funkcja wywołuje off_typesetstate(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.
class sentry
{
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 flagiiunitbuf nie sązerowe, 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
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
liczba
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