Megosztás:


basic_ostream osztály

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. é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