Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez az osztálysablon egy olyan objektumot ír le, amely az elemek és a kódolt objektumok streampufferbe való beszúrását szabályozza olyan típusú Elemelemekkel (más néven char_type), amelyek karaktertulajdonságait az osztály Trhatározza meg, más néven traits_type.
Szemantika
template <class Elem, class Tr = char_traits<Elem>>
class basic_ostream : virtual public basic_ios<Elem, Tr>
Paraméterek
Elem
A char_type.
Tr
A karakter traits_type.
Megjegyzések
A túlterhelési operátort<< használó tagfüggvények többsége formázott kimeneti függvény. A következő mintát követik:
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);
Két másik tagfüggvény nem formázott kimeneti függvény. A következő mintát követik:
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);
Mindkét függvénycsoport meghívja a setstate(badbit) függvényt, ha hiba történt az elemek beszúrása közben.
Az Elem basic_istream<, Tr osztály objektuma csak egy virtuális nyilvános alapobjektumot tárol ><, > osztályban.
példa
A kimeneti streamekről a basic_ofstream osztály példájában talál további információt.
Konstruktorok
| Konstruktor | Leírás |
|---|---|
| basic_ostream | Egy basic_ostream objektumot hoz létre. |
Tagfüggvények
| Tagfüggvény | Leírás |
|---|---|
| öblít | Kiüríti a puffert. |
| helyezze | Egy karaktert egy streambe helyez. |
| kereső | Alaphelyzetbe állítja a kimeneti stream pozícióját. |
| őrszem | A beágyazott osztály egy olyan objektumot ír le, amelynek deklarációja a formázott kimeneti függvényeket és a formázatlan kimeneti függvényeket tartalmazza. |
| felcserélési | Az objektum értékeit a megadott basic_ostream objektum értékeire basic_ostream cseréli. |
| tellp | Jelentések pozíciója a kimeneti streamben. |
| ír | Karaktereket helyez el egy streamben. |
Működtetők
| Operátor | Leírás |
|---|---|
| operátor= | Hozzárendeli a megadott basic_ostream objektumparaméter értékét ehhez az objektumhoz. |
| operátor<< | Írás a streambe. |
Követelmények
Fejléc:<ostream>
Névtér: std
basic_ostream::basic_ostream
Egy basic_ostream objektumot hoz létre.
explicit basic_ostream(
basic_streambuf<Elem, Tr>* strbuf,
bool _Isstd = false);
basic_ostream(basic_ostream&& right);
Paraméterek
strbuf
Egy basic_streambuf típusú objektum.
_Isstd
trueha ez egy standard stream; egyéb esetben. false
jobb
Rvalue-hivatkozás egy típusú basic_ostreamobjektumra .
Megjegyzések
Az első konstruktor inicializálja az alaposztályt az init()strbuf meghívásával. A második konstruktor inicializálja az alaposztályt az basic_ios::move(right) meghívásával.
példa
A kimeneti streamekről további információt a basic_ofstream::basic_ofstream című példában talál.
basic_ostream::flush
Kiüríti a puffert.
basic_ostream<Elem, Tr>& flush();
Visszaadott érték
Hivatkozás a basic_ostream objektumra.
Megjegyzések
Ha az rdbuf nem null mutató, a függvény rdbuf-pubsyncet> hív meg. Ha ez -1 értéket ad vissza, a függvény meghívja a setstate(badbit) értéket. * ezt adja vissza.
példa
// basic_ostream_flush.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout << "test";
cout.flush();
}
test
basic_ostream::operator<<
Írás a streambe.
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);
Paraméterek
Pfn
Egy függvénymutató.
strbuf
Egy objektumra mutató stream_buf mutató.
val
A streambe írandó elem.
Visszaadott érték
Hivatkozás a basic_ostream objektumra.
Megjegyzések
Az <ostream> fejléc több globális beszúrási operátort is definiál. További információ: operátor<<.
Az első tagfüggvény biztosítja, hogy az űrlap ostr << endl kifejezése meghívja az endl(ostr) függvényt, majd *ezt adja vissza. A második és a harmadik függvény biztosítja, hogy más manipulátorok, például a hexa hasonlóan viselkedjenek. A többi függvény mind formázott kimeneti függvény.
A függvény
basic_ostream<Elem, Tr>& operator<<(basic_streambuf<Elem, Tr>* strbuf);
Kinyeri az elemeket az strbufból, ha az strbuf nem null mutató, és beszúrja őket. A kinyerés leáll a fájl végén, vagy ha egy kinyerés kivételt vet fel (amely újra meg van oltva). Ha egy beszúrás sikertelen, a kérdéses elem kinyerése nélkül is leáll. Ha a függvény nem szúr be elemeket, vagy ha egy kinyerés kivételt eredményez, a függvény meghívja a setstate(failbit) függvényt. A függvény mindenesetre *ezt adja vissza.
A függvény
basic_ostream<Elem, Tr>& operator<<(bool val);
logikai mezővé konvertálja _Val és beszúrja use_facet num_put<<Elem, OutIt>(getloc meghívásával).
put(OutIt(rdbuf), *this, getloc, val).
OutIt Itt ostreambuf_iterator Elem, Tr<.> A függvény *ezt adja vissza.
A függvények
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);
mindegyik számmezővé konvertálja az értékeket, és beszúrja use_facet num_put<<Elem, OutIt>(getloc) meghívásával.
put(OutIt(rdbuf), *this, getloc; val). Itt az OutIt ostreambuf_iterator Elem, Tr< néven van definiálva>. A függvény *ezt adja vissza.
A függvények
basic_ostream<Elem, Tr>& operator<<(float val);
basic_ostream<Elem, Tr>& operator<<(double val);
basic_ostream<Elem, Tr>& operator<<(long double val);
mindegyik számmezővé konvertálja az értékeket, és beszúrja use_facet num_put<<Elem, OutIt>(getloc). put(OutIt(rdbuf), *this, getlocval) meghívásával. Itt az OutIt ostreambuf_iterator Elem, Tr< néven van definiálva>. A függvény *ezt adja vissza.
példa
// 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::operátor=
A megadott basic_ostream objektumparaméter értékeit rendeli hozzá ehhez az objektumhoz.
basic_ostream& operator=(basic_ostream&& right);
Paraméterek
jobb
Egy rvalue objektumra mutató basic_ostream hivatkozás.
Megjegyzések
A tag operátor meghívja a felcserélést (right).
basic_ostream::p ut
Egy karaktert egy streambe helyez.
basic_ostream<Elem, Tr>& put(char_type _Ch);
Paraméterek
_Ch
Egy karakter.
Visszaadott érték
Hivatkozás a basic_ostream objektumra.
Megjegyzések
A formázatlan kimeneti függvény beszúrja a _Ch elemet. * ezt adja vissza.
példa
// 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
Alaphelyzetbe állítás a kimeneti streamben.
basic_ostream<Elem, Tr>& seekp(pos_type _Pos);
basic_ostream<Elem, Tr>& seekp(off_type _Off, ios_base::seekdir _Way);
Paraméterek
_Pos
A stream pozíciója.
_Ki
Az eltolás a _Way képest.
_Út
Az egyik ios_base::seekdir enumerációk.
Visszaadott érték
Hivatkozás a basic_ostream objektumra.
Megjegyzések
Sikertelenségfalseesetén az első tagfüggvény meghívja a newpos =rdbuf-pubseekpos>(_Pos) függvényt egy pos_type ideiglenes objektumhoz.newpos Ha fail hamis, a második függvény a newpos = rdbuf-pubseekoff>(_Off, _Way) függvényt hívja meg. Ha (off_type)newpos == (off_type)(-1) (a helymeghatározó művelet sikertelen), akkor a függvényhívások istr.setstate(failbit). Mindkét függvény *ezt adja vissza.
példa
// 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
A beágyazott osztály egy olyan objektumot ír le, amelynek deklarációja a formázott kimeneti függvényeket és a formázatlan kimeneti függvényeket tartalmazza.
class sentry
{
public:
explicit sentry(basic_ostream<Elem, Tr>& _Ostr);
operator bool() const;
~sentry();
};
Megjegyzések
A beágyazott osztály egy olyan objektumot ír le, amelynek deklarációja a formázott kimeneti függvényeket és a formázatlan kimeneti függvényeket tartalmazza. Ha ostr.jó és trueostr.a tie nem null mutató, a konstruktor meghívja az ostr.tie-flush parancsot>. A konstruktor ezután tárolja a visszaadott ostr.good értéket.status Egy későbbi hívás a operator bool tárolt érték kézbesítésére.
Ha uncaught_exception a visszaadott false és a flags&egységbuf nem ero, a destruktor kiürítést hív.
basic_ostream::swap
Az objektum értékeit basic_ostream a megadott basic_ostreamértékekre cseréli.
void swap(basic_ostream& right);
Paraméterek
jobb
Hivatkozás egy basic_ostream objektumra.
Megjegyzések
A tagfüggvény meghívja a basic_ios::swap(right) függvényt az objektum tartalmának cseréjéhez a jobb oldali tartalomra.
basic_ostream::tellp
Jelentés pozíciója a kimeneti streamben.
pos_type tellp();
Visszaadott érték
Pozíció a kimeneti streamben.
Megjegyzések
Ha a hiba azfalse, a tagfüggvény rdbuf-pubseekoff>(0, curin) értéket ad vissza. Ellenkező esetben visszaadja pos_typea (-1) értéket.
példa
Tekintse meg a keresőben egy példát a következő használatával tellp: .
basic_ostream::write
Karakterek elhelyezése streamben.
basic_ostream<Elem, Tr>& write(const char_type* str, streamsize count);
Paraméterek
gróf
A streambe helyezendő karakterek száma.
Str
A streambe helyezendő karakterek.
Visszaadott érték
Hivatkozás a basic_ostream objektumra.
Megjegyzések
A formázatlan kimeneti függvény beszúrja az str-től kezdődő számelemek sorozatát.
példa
Tekintse meg a streamsize példát a következő használatával write: .
Lásd még
Szálbiztonság a C++ Standard könyvtárban
iostream programozás
iostreams-egyezmények