Megosztás:


basic_streambuf osztály

A streampufferek származtatásának absztrakt alaposztályát ismerteti, amely szabályozza az elemek átvitelét egy adott adatfolyam egy adott ábrázolásából.

Szemantika

template <class Elem, class Tr = char_traits<Elem>>
class basic_streambuf;

Paraméterek

Elem
Egy char_type.

Tr
A karakter traits_type.

Megjegyzések

Az osztálysablon egy absztrakt alaposztályt ír le egy streampuffer származtatásához, amely szabályozza az elemek átvitelét egy adott stream egy adott ábrázolásából. Az osztály basic_streambuf objektumai tr típusú elemekkel ( más néven char_type) irányítják a streamet, amelynek karaktertulajdonságait az osztály char_traits, más néven traits_type határozza meg.

Minden streampuffer elméletileg két független streamet vezérel: egyet a kinyerésekhez (bemenethez), egyet pedig a beszúrásokhoz (kimenet). Egy adott ábrázolás azonban mindkét streamet elérhetetlenné teheti. Ez általában fenntart néhány kapcsolatot a két stream között. Amit beszúr egy basic_stringbuf<Elem kimeneti adatfolyamába, Tr> például az, amit később kinyer a bemeneti adatfolyamból. Amikor egy basic_filebuf<Elem egyik adatfolyamát, Tr> objektumot helyez el, a másik streamet a tandembe helyezi.

Az osztálysablon basic_streambuf nyilvános felülete biztosítja az összes streampufferre jellemző műveleteket, azonban specializáltak. A védett felület biztosítja azokat a műveleteket, amelyek a streamek adott ábrázolásához szükségesek ahhoz, hogy elvégezhesse a munkáját. A védett virtuális tagfüggvények lehetővé teszik a származtatott streampufferek viselkedésének testreszabását egy stream adott ábrázolása érdekében. A kódtár minden származtatott streampuffere leírja, hogyan specializálja a védett virtuális tagfüggvények viselkedését. Az alaposztály alapértelmezett viselkedését, amely gyakran nem tesz semmit, ebben a cikkben ismertetjük.

A fennmaradó védett tagfüggvények szabályozzák a streamekbe és az onnan érkező pufferátvitelekhez biztosított tárolókba való másolást. A bemeneti puffert például a következők jellemzik:

  • eback, egy mutató a puffer elejére.

  • gptr, egy mutató a következő elolvasni kívánt elemhez.

  • egptr, egy mutató a puffer végén.

Hasonlóképpen a kimeneti puffert a következők jellemzik:

  • pbase, a puffer elejére mutató mutató.

  • pptr, egy mutató a következő írási elemre.

  • epptr, egy mutató a puffer végén.

Bármely puffer esetében a következő protokollt használja a rendszer:

  • Ha a következő mutató null, nincs puffer. Ellenkező esetben mindhárom mutató ugyanarra a sorozatra mutat. Ezek a sorrendben biztonságosan összehasonlíthatók.

  • Kimeneti puffer esetén, ha a következő mutató kisebb, mint a végmutató, a következő mutató által kijelölt írási pozícióban tárolhat egy elemet.

  • Bemeneti puffer esetén, ha a következő mutató kisebb, mint a végmutató, a következő mutató által kijelölt olvasási pozícióban olvashat egy elemet.

  • Bemeneti puffer esetén, ha az első mutató kisebb, mint a következő mutató, visszahelyezhet egy elemet a visszahelyezett következő mutató által kijelölt helyre.

Minden védett virtuális tagfüggvénynek, amelyből basic_streambuf<Elemszármaztatott osztályt ír, Tr> együttműködnie kell a protokoll fenntartásában.

Az osztály basic_streambuf<Elemegy objektuma, Tr> amely a korábban leírt hat mutatót tárolja. Emellett egy területi objektumot is tárol egy honosított típusú objektumban, hogy egy származtatott streampuffer potenciálisan használhassa.

Konstruktorok

Konstruktor Leírás
basic_streambuf Egy típusú basic_streambufobjektumot hoz létre.

Typedefs

Típus neve Leírás
char_type Típusnevet társít a Elem sablonparaméterhez.
int_type Típusnevet társít a hatókörön belül basic_streambuf a Elem sablonparaméterhez.
off_type Típusnevet társít a hatókörön belül basic_streambuf a Elem sablonparaméterhez.
pos_type Típusnevet társít a hatókörön belül basic_streambuf a Elem sablonparaméterhez.
traits_type Típusnevet társít a Tr sablonparaméterhez.

Tagfüggvények

Tagfüggvény Leírás
eback Védett függvény, amely a bemeneti puffer elejére mutató mutatót ad vissza.
egptr Védett függvény, amely egy mutatót ad vissza a bemeneti puffer végén.
epptr Védett függvény, amely egy mutatót ad vissza a kimeneti puffer végén.
gbump Védett függvény, amely hozzáadja count a bemeneti puffer következő mutatóját.
getloc Lekéri az basic_streambuf objektum területi beállítását.
gptr Védett függvény, amely a bemeneti puffer következő elemére mutató mutatót ad vissza.
átitat A pubimbue által hívott védett virtuális függvény.
in_avail Azoknak az elemeknek a számát adja vissza, amelyek készen állnak a pufferből való olvasásra.
bővelkedik Védett virtuális függvény, amely akkor hívható meg, ha új karaktert szúr be egy teljes pufferbe.
pbackfail Védett virtuális tagfüggvény, amely megpróbál visszatenni egy elemet a bemeneti adatfolyamba, majd az aktuális elemként (a következő mutatóra mutatva).
pbase Védett függvény, amely a kimeneti puffer elejére mutató mutatót ad vissza.
pbump Védett függvény, amely hozzáadja count a kimeneti puffer következő mutatóját.
pptr Védett függvény, amely a kimeneti puffer következő elemére mutató mutatót ad vissza.
pubimbue Beállítja az basic_streambuf objektum területi beállítását.
pubseekoff Egy származtatott osztályban felül bírált védett virtuális függvény, a seekoff meghívása.
pubseekpos Meghívja a seekpos nevű védett virtuális függvényt, amely felül van bírálva egy származtatott osztályban, és alaphelyzetbe állítja az aktuális mutatópozíciót.
pubsetbuf Egy származtatott osztályban felülbírált védett virtuális függvény, a Setbuf meghívása.
pubsync Meghívja a szinkronizálást, egy védett virtuális függvényt, amely felül van bírálva egy származtatott osztályban, és frissíti a pufferhez társított külső streamet.
sbumpc Beolvassa és visszaadja az aktuális elemet, és áthelyezi a streammutatót.
lekérés A védett virtuális tagfüggvény megpróbálja módosítani az ellenőrzött streamek aktuális pozícióit.
seekpos A védett virtuális tagfüggvény megpróbálja módosítani az ellenőrzött streamek aktuális pozícióit.
setbuf A védett virtuális tagfüggvény az egyes származtatott streampufferekre vonatkozó műveletet hajt végre.
setg Védett függvény, amely az első mutatóban, _Gbeg a következő mutatóban és _Gnext a bemeneti puffer végpontjában található_Gend.
setp Védett függvény, amely az első és _Pbeg a végponti mutatóban tárolja _Pend a kimeneti puffert.
sgetc Az aktuális elemet adja vissza a stream pozíciójának módosítása nélkül.
sgetn Az olvasott elemek számát adja vissza.
showmanyc Védett virtuális tagfüggvény, amely a bemeneti adatfolyamból kinyerhető karakterek számát adja vissza. Azt is biztosítja, hogy a program nem lesz meghatározatlan várakozási idő alatt.
snextc Beolvassa az aktuális elemet, és a következő elemet adja vissza.
sputbackc Berak egy char_type elemet a streambe.
köpet Egy karaktert helyez a streambe.
köpet Karaktersztringet helyez a streambe.
stossc Lépjen át a stream aktuális elemétől.
sungetc Lekéri a karaktert a streamből.
felcserélési Az objektum értékeit a megadott basic_streambuf objektumparaméter értékeire cseréli.
szinkronizálás Védett virtuális függvény, amely megpróbálja szinkronizálni az ellenőrzött streameket a társított külső streamekkel.
uflow Védett virtuális függvény, amely kinyeri az aktuális elemet a bemeneti adatfolyamból.
alulcsordulás Védett virtuális függvény, amely kinyeri az aktuális elemet a bemeneti adatfolyamból.
xsgetn Védett virtuális függvény, amely elemeket nyer ki a bemeneti adatfolyamból.
xsputn Védett virtuális függvény, amely elemeket szúr be a kimeneti adatfolyamba.

Működtetők

Operátor Leírás
operátor= Az objektum értékeit egy másik basic_streambuf objektumból rendeli hozzá.

Követelmények

Fejléc:<streambuf>

Névtér: std

basic_streambuf::basic_streambuf

Egy típusú basic_streambufobjektumot hoz létre.

basic_streambuf();

basic_streambuf(const basic_streambuf& right);

Paraméterek

jobb
Az objektum értékeinek basic_streambuf beállításához használt objektumra mutató lvalue-hivatkozásbasic_streambuf.

Megjegyzések

Az első védett konstruktor null mutatót tárol minden olyan mutatóban, amely a bemeneti puffert és a kimeneti puffert vezérli. A területi objektumban is tárolja locale::classic . További információ: locale::classic.

A második védett konstruktor jobbról másolja a mutatókat és a területi beállításokat.

basic_streambuf::char_type

Típusnevet társít az Elem sablonparaméterhez.

typedef Elem char_type;

basic_streambuf::eback

Védett függvény, amely a bemeneti puffer elejére mutató mutatót ad vissza.

char_type *eback() const;

Visszaadott érték

A bemeneti puffer elejére mutató mutató.

basic_streambuf::egptr

Védett függvény, amely egy mutatót ad vissza a bemeneti puffer végén.

char_type *egptr() const;

Visszaadott érték

Egy mutató a bemeneti puffer végén.

basic_streambuf::epptr

Védett függvény, amely egy mutatót ad vissza a kimeneti puffer végén.

char_type *epptr() const;

Visszaadott érték

Egy mutató a kimeneti puffer végén.

basic_streambuf::gbump

Védett függvény, amely a bemeneti puffer következő mutatójának számát adja hozzá.

void gbump(int count);

Paraméterek

gróf
Az az összeg, amellyel előre kell léptetnie a mutatót.

basic_streambuf::getloc

Lekéri a basic_streambuf objektum területi beállítását.

locale getloc() const;

Visszaadott érték

A tárolt területi objektum.

Megjegyzések

A kapcsolódó információkért lásd: ios_base::getloc.

példa

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

int main( )
{
   using namespace std;
   cout << cout.rdbuf( )->getloc( ).name( ).c_str( ) << endl;
}
C

basic_streambuf::gptr

Védett függvény, amely a bemeneti puffer következő elemére mutató mutatót ad vissza.

char_type *gptr() const;

Visszaadott érték

A bemeneti puffer következő elemére mutató mutató.

basic_streambuf::imbue

A pubimbue által hívott védett virtuális függvény.

virtual void imbue(const locale& _Loc);

Paraméterek

_Loc
Hivatkozás egy területi beállításra.

Megjegyzések

Az alapértelmezett viselkedés az, hogy nem tesz semmit.

basic_streambuf::in_avail

Azoknak az elemeknek a számát adja vissza, amelyek készen állnak a pufferből való olvasásra.

streamsize in_avail();

Visszaadott érték

A pufferből beolvasható elemek száma.

Megjegyzések

Ha elérhető olvasási pozíció, a tagfüggvény egptr gptr - értéket ad vissza. Ellenkező esetben showmanyc értéket ad vissza.

példa

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

int main( )
{
   using namespace std;
   char c;
   // cin's buffer is empty, in_avail will return 0
   cout << cin.rdbuf( )->in_avail( ) << endl;
   cin >> c;
   cout << cin.rdbuf( )->in_avail( ) << endl;
}

basic_streambuf::int_type

A basic_streambuf hatókörben lévő típusnevet társítja a sablonparaméter egyik típusához.

typedef typename traits_type::int_type int_type;

basic_streambuf::off_type

A basic_streambuf hatókörben lévő típusnevet társítja a sablonparaméter egyik típusához.

typedef typename traits_type::off_type off_type;

basic_streambuf::operátor=

Az objektum értékeit egy másik basic_streambuf objektumból rendeli hozzá.

basic_streambuf& operator=(const basic_streambuf& right);

Paraméterek

jobb
Értékhivatkozás az basic_streambuf objektumhoz értékek hozzárendeléséhez használt objektumra.

Megjegyzések

A védett tag operátora jobbról másolja a bemeneti puffert és a kimeneti puffert vezérlő mutatókat. Azt is tárolja right.getloc() a locale object. Visszaadja a *this értéket.

basic_streambuf::túlcsordulás

Védett virtuális függvény, amely akkor hívható meg, ha új karaktert szúr be egy teljes pufferbe.

virtual int_type overflow(int_type _Meta = traits_type::eof());

Paraméterek

_Meta
A pufferbe beszúrni kívánt karakter, vagy traits_type::eof.

Visszaadott érték

Ha a függvény nem sikerül, traits_type ::eof vagy kivételt ad vissza. Ellenkező esetben a következő traits_type::not_eof(_ Meta) értéket adja vissza. Az alapértelmezett viselkedés az traits_type::eof visszaadása.

Megjegyzések

Ha _Meta nem egyenlő a traits_type::eof értékével, a védett virtuális tagfüggvény arra törekszik, hogy beszúrja a traits_type::to_char_type(_Meta) elemet a kimeneti adatfolyamba. Ezt többféleképpen teheti meg:

  • Ha van ilyen write position , az elemet az írási pozícióba helyezheti, és a kimeneti puffer következő mutatóját növekményessé teheti.

  • Az írási pozíciót úgy teheti elérhetővé, hogy új vagy további tárolót rendel a kimeneti pufferhez.

  • Az írási pozíciót úgy teheti elérhetővé, hogy kiír egy külső célhelyet, vagy a kimeneti puffer első és következő mutatói közötti néhány vagy az összes elemet.

A virtuális túlcsordulási függvény a szinkronizálási és az alulcsordulási függvényekkel együtt meghatározza a streambuf-származtatott osztály jellemzőit. Minden származtatott osztály eltérően implementálhatja a túlcsordulást, de a hívó streamosztály felülete ugyanaz.

A overflow függvényt leggyakrabban nyilvános streambuf függvények hívják, például sputcsputn a put terület megtelésekor, de más osztályok, beleértve a streamosztályokat is, bármikor meghívhatók overflow .

A függvény felhasználja a put területen lévő karaktereket a mutató és a pbasepptr mutató között, majd újraincializálja az elhelyezési területet. A overflow függvénynek is fel kell használnia nCh (ha nCh nem EOF), vagy dönthet úgy, hogy az új put területre helyezi a karaktert, hogy a következő hívásban felhasználhassa.

A felhasználás definíciója a származtatott osztályok között változik. Az osztály például filebuf egy fájlba írja a karaktereit, míg az strstreambuf osztály a pufferben tartja őket, és (ha a puffer dinamikusként van kijelölve) kibontja a puffert egy túlcsordulásra irányuló hívásra válaszul. Ez a bővítés úgy érhető el, hogy felszabadítja a régi puffert, és lecseréli egy új, nagyobbra. A mutatók szükség szerint módosulnak.

basic_streambuf::p backfail

Védett virtuális tagfüggvény, amely megpróbál visszatenni egy elemet a bemeneti adatfolyamba, majd az aktuális elemként (a következő mutatóra mutatva).

virtual int_type pbackfail(int_type _Meta = traits_type::eof());

Paraméterek

_Meta
A pufferbe beszúrni kívánt karakter, vagy traits_type::eof.

Visszaadott érték

Ha a függvény nem sikerül, traits_type ::eof vagy kivételt ad vissza. Ellenkező esetben más értéket ad vissza. Az alapértelmezett viselkedés az traits_type::eof visszaadása.

Megjegyzések

Ha _Meta egyenlő az traits_type::eof értékével, akkor a visszaküldési elem tulajdonképpen az, amelyik már az aktuális elem előtt van a streamben. Ellenkező esetben az elem helyébe a következő traits_type::to_char_type(_Meta) lép. A függvény többféleképpen is vissza tud állítani egy elemet:

  • Ha rendelkezésre áll egy tartalék pozíció, az elemet a visszahelyező pozícióba helyezheti, és a bemeneti puffer következő mutatóját is vissza lehet állítani.

  • A visszahelyezési pozíciót úgy teheti elérhetővé, hogy új vagy további tárolót rendel a bemeneti pufferhez.

  • A gyakori bemeneti és kimeneti adatfolyamokkal rendelkező streampufferek esetében a tartalék pozíciót úgy teheti elérhetővé, hogy kiír egy külső célhelyet, vagy a kimeneti puffer első és következő mutatói közötti elemek egy részét vagy mindegyikét.

basic_streambuf::p base

Védett függvény, amely a kimeneti puffer elejére mutató mutatót ad vissza.

char_type *pbase() const;

Visszaadott érték

A kimeneti puffer elejére mutató mutató.

basic_streambuf::p bump

Védett függvény, amely a kimeneti puffer következő mutatójának számát adja hozzá.

void pbump(int count);

Paraméterek

gróf
Az írási pozíció előremozdításához használható karakterek száma.

basic_streambuf::p os_type

A basic_streambuf hatókörben lévő típusnevet társítja a sablonparaméter egyik típusához.

typedef typename traits_type::pos_type pos_type;

basic_streambuf::p ptr

Védett függvény, amely a kimeneti puffer következő elemére mutató mutatót ad vissza.

char_type *pptr() const;

Visszaadott érték

A kimeneti puffer következő elemére mutató mutató.

basic_streambuf::p ubimbue

Beállítja a basic_streambuf objektum területi beállítását.

locale pubimbue(const locale& _Loc);

Paraméterek

_Loc
Hivatkozás egy területi beállításra.

Visszaadott érték

A területi objektumban tárolt előző érték.

Megjegyzések

A tagfüggvény a _ Loc fájlt a területi objektumban tárolja, és imbue-t hív meg.

példa

Egy példát a basic_ios::imbue fájlban talál pubimbue.

basic_streambuf::p ubseekoff

Egy származtatott osztályban felül bírált védett virtuális függvény, a seekoff meghívása.

pos_type pubseekoff(off_type _Off,
    ios_base::seekdir _Way,
    ios_base::openmode _Which = ios_base::in | ios_base::out);

Paraméterek

_Ki
A _Way-hez viszonyítva keresendő pozíció.

_Út
Az eltolási műveletek kiindulópontja. A lehetséges értékekért tekintse meg a seekdirt .

_Melyik
A mutató pozíciójának módját adja meg. Az alapértelmezett beállítás az olvasási és írási pozíciók módosításának engedélyezése.

Visszaadott érték

Az új vagy érvénytelen streampozíciót adja vissza (seekoff(_ Off, _Way; _Which)).

Megjegyzések

A mutatót a _Way viszonyítva mozgatja.

basic_streambuf::p ubseekpos

Meghívja a seekpos nevű védett virtuális függvényt, amely felül van bírálva egy származtatott osztályban, és alaphelyzetbe állítja az aktuális mutatópozíciót.

pos_type pubseekpos(pos_type _Sp, ios_base::openmode _Which = ios_base::in | ios_base::out);

Paraméterek

_Sp
A keresett pozíció.

_Melyik
A mutató pozíciójának módját adja meg. Az alapértelmezett beállítás az olvasási és írási pozíciók módosításának engedélyezése.

Visszaadott érték

Az új vagy érvénytelen streampozíció. Annak megállapításához, hogy a stream pozíciója érvénytelen-e, hasonlítsa össze a visszatérési értéket a következővel pos_type(off_type(-1)): .

Megjegyzések

A tagfüggvény a seekpos(_ Sp, _Which).

basic_streambuf::p ubsetbuf

Egy származtatott osztályban felülbírált védett virtuális függvény, a Setbuf meghívása.

basic_streambuf<Elem, Tr> *pubsetbuf(
    char_type* _Buffer,
    streamsize count);

Paraméterek

_Puffer
Erre a char_type példányra mutató mutató.

gróf
A puffer mérete.

Visszaadott érték

A setbuf(_Buffer, count).

basic_streambuf::p ubsync

Meghívja a szinkronizálást, egy védett virtuális függvényt, amely felül van bírálva egy származtatott osztályban, és frissíti a pufferhez társított külső streamet.

int pubsync();

Visszaadott érték

Hiba esetén a szinkronizálást vagy -1 adja vissza.

basic_streambuf::sbumpc

Beolvassa és visszaadja az aktuális elemet, és áthelyezi a streammutatót.

int_type sbumpc();

Visszaadott érték

Az aktuális elem.

Megjegyzések

Ha elérhető olvasási pozíció, a tagfüggvény a következő traits_type::to_int_type(*gptr) értéket adja vissza, és növeli a bemeneti puffer következő mutatóját. Ellenkező esetben az uflow értéket adja vissza.

példa

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

int main( )
{
   using namespace std;
   int i = 0;
   i = cin.rdbuf( )->sbumpc( );
   cout << i << endl;
}
3
33
51

basic_streambuf::seekoff

Védett virtuális tagfüggvény, amely megpróbálja módosítani az ellenőrzött streamek aktuális pozícióit.

virtual pos_type seekoff(
    off_type _Off,
    ios_base::seekdir _Way,
    ios_base::openmode _Which = ios_base::in | ios_base::out);

Paraméterek

_Ki
A _Way-hez viszonyítva keresendő pozíció.

_Út
Az eltolási műveletek kiindulópontja. A lehetséges értékekért tekintse meg a seekdirt .

_Melyik
A mutató pozíciójának módját adja meg. Az alapértelmezett beállítás az olvasási és írási pozíciók módosításának engedélyezése.

Visszaadott érték

Az új vagy érvénytelen streampozíciót adja vissza (seekoff (_ Ki, _Way), _Which)).

Megjegyzések

Az új pozíció az alábbiak szerint van meghatározva:

  • Ha _Way == ios_base::begaz új pozíció a stream kezdete és a _ Ki.

  • Ha _Way == ios_base::cur, akkor az új pozíció az aktuális streamhelyzet plusz _ Ki.

  • Ha _Way == ios_base::end, az új pozíció a stream vége plusz _ Ki.

Általában, ha a &ios_base::in nem ero, akkor a bemeneti adatfolyam érintett, és ha melyik &ios_base::ki nemzero, akkor a kimeneti adatfolyam is érintett. Ennek a paraméternek a tényleges használata azonban eltérő a származtatott streampufferek között.

Ha a függvénynek sikerül módosítania a stream pozícióját vagy pozícióit, az eredményül kapott streampozíciót vagy az eredményül kapott streampozíciók egyikét adja vissza. Ellenkező esetben érvénytelen streampozíciót ad vissza. Az alapértelmezett viselkedés az, hogy érvénytelen streampozíciót ad vissza.

basic_streambuf::seekpos

Védett virtuális tagfüggvény, amely megpróbálja módosítani az ellenőrzött streamek aktuális pozícióit.

virtual pos_type seekpos(pos_type _Sp, ios_base::openmode _Which = ios_base::in | ios_base::out);

Paraméterek

_Sp
A keresett pozíció.

_Melyik
A mutató pozíciójának módját adja meg. Az alapértelmezett beállítás az olvasási és írási pozíciók módosításának engedélyezése.

Visszaadott érték

Az új pozíció, vagy érvénytelen streampozíció. Annak megállapításához, hogy a stream pozíciója érvénytelen-e, hasonlítsa össze a visszatérési értéket a következővel pos_type(off_type(-1)): .

Megjegyzések

Az új pozíció : _ Sp.

Általában, ha a &ios_base::in nem ero, akkor a bemeneti adatfolyam érintett, és ha melyik &ios_base::ki nemzero, akkor a kimeneti adatfolyam is érintett. Ennek a paraméternek a tényleges használata azonban eltérő a származtatott streampufferek között.

Ha a függvénynek sikerül módosítania a stream pozícióját vagy pozícióit, az eredményül kapott streampozíciót vagy az eredményül kapott streampozíciók egyikét adja vissza. Ellenkező esetben érvénytelen streampozíciót ad vissza (-1). Az alapértelmezett viselkedés az, hogy érvénytelen streampozíciót ad vissza.

basic_streambuf::setbuf

Védett virtuális tagfüggvény, amely az egyes származtatott streampufferekre vonatkozó műveletet hajt végre.

virtual basic_streambuf<Elem, Tr> *setbuf(
    char_type* _Buffer,
    streamsize count);

Paraméterek

_Puffer
Mutató egy pufferhez.

gróf
A puffer mérete.

Visszaadott érték

Az alapértelmezett viselkedés a visszatérés this.

Megjegyzések

Lásd : basic_filebuf. setbuf memóriaterületet biztosít az streambuf objektum számára. A puffer használata a származtatott osztályokban definiálva.

basic_streambuf::setg

Védett függvény, amely a _ Gbeg értéket az első mutatóban, _Gnext a következő mutatóban és _Gend a bemeneti puffer végpontmutatójában tárolja.

void setg(char_type* _Gbeg,
    char_type* _Gnext,
    char_type* _Gend);

Paraméterek

_Gbeg
A puffer elejére mutató mutató.

_Gnext
Mutató a puffer közepén lévő helyre.

_Gend
Mutató a puffer végéhez.

basic_streambuf::setp

Védett függvény, amely a _Pbeg az első mutatóban tárolja, és _Pend a kimeneti puffer végpontmutatójában.

void setp(char_type* _Pbeg, char_type* _Pend);

Paraméterek

_Pbeg
A puffer elejére mutató mutató.

_Pend
Mutató a puffer végéhez.

basic_streambuf::sgetc

Az aktuális elemet adja vissza a stream pozíciójának módosítása nélkül.

int_type sgetc();

Visszaadott érték

Az aktuális elem.

Megjegyzések

Ha elérhető olvasási pozíció, a tagfüggvény a következő traits_type::to_int_type(*gptr) értéket adja vissza. Ellenkező esetben alulcsordulást ad vissza.

példa

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

int main( )
{
   using namespace std;
   ifstream myfile( "basic_streambuf_sgetc.txt", ios::in );

   char i = myfile.rdbuf( )->sgetc( );
   cout << i << endl;
   i = myfile.rdbuf( )->sgetc( );
   cout << i << endl;
}

basic_streambuf::sgetn

A bemeneti puffer karaktereinek megszámlálásához kinyeri és a megadott puffer ptr-ben tárolja őket.

Ez a módszer potenciálisan nem biztonságos, mivel a hívóra támaszkodva ellenőrzi, hogy az átadott értékek helyesek-e.

streamsize sgetn(
    char_type* ptr,
    streamsize count);

Paraméterek

ptr
A kinyert karaktereket tartalmazó puffer.

gróf
Az elolvasandó elemek száma.

Visszaadott érték

Az olvasott elemek száma. További információkért tekintse meg a streamsize című témakört.

Megjegyzések

A tagfüggvény xsgetn(ptr, count).

példa

// basic_streambuf_sgetn.cpp
// compile with: /EHsc /W3
#include <iostream>
#include <fstream>

int main()
{
    using namespace std;

    ifstream myfile("basic_streambuf_sgetn.txt", ios::in);
    char a[10];

    // Extract 3 characters from myfile and store them in a.
    streamsize i = myfile.rdbuf()->sgetn(&a[0], 3);  // C4996
    a[i] = myfile.widen('\0');

    // Display the size and contents of the buffer passed to sgetn.
    cout << i << " " << a << endl;

    // Display the contents of the original input buffer.
    cout << myfile.rdbuf() << endl;
}

basic_streambuf::showmanyc

Védett virtuális tagfüggvény, amely a bemeneti adatfolyamból kinyerhető karakterek számát adja vissza, és biztosítja, hogy a program ne legyen határozatlan ideig várakozva.

virtual streamsize showmanyc();

Visszaadott érték

Az alapértelmezett viselkedés a nulla visszaadása.

basic_streambuf::snextc

Beolvassa az aktuális elemet, és a következő elemet adja vissza.

int_type snextc();

Visszaadott érték

A stream következő eleme.

Megjegyzések

A tagfüggvény meghívja a sbumpc függvényt, és ha ez a függvény traits_type::eof értéket ad vissza, akkor traits_type::eof értéket ad vissza. Ellenkező esetben sgetc értéket ad vissza.

példa

// basic_streambuf_snextc.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
   using namespace std;
   int i = 0;
   i = cin.rdbuf( )->snextc( );
   // cout << ( int )char_traits<char>::eof << endl;
   cout << i << endl;
}
aa
aa97

basic_streambuf::sputbackc

Egy char_type helyez a streambe.

int_type sputbackc(char_type _Ch);

Paraméterek

_Ch
A karakter.

Visszaadott érték

A karaktert vagy a hibát adja vissza.

Megjegyzések

Ha rendelkezésre áll egy tartalék pozíció, és _Ch az adott pozícióban tárolt karakterrel egyenlő, a tagfüggvény a bemeneti puffer következő mutatóját dekrementálja, és traits_type::to_int_type(_Ch) értéket ad vissza. Ellenkező esetben a pbackfail(_Ch) értéket adja vissza.

példa

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

int main( )
{
    using namespace std;

    ifstream myfile("basic_streambuf_sputbackc.txt",
        ios::in);

    int i = myfile.rdbuf()->sbumpc();
    cout << (char)i << endl;
    int j = myfile.rdbuf()->sputbackc('z');
    if (j == 'z')
    {
        cout << "it worked" << endl;
    }
    i = myfile.rdbuf()->sgetc();
    cout << (char)i << endl;
}

basic_streambuf::sputc

Egy karaktert helyez a streambe.

int_type sputc(char_type _Ch);

Paraméterek

_Ch
A karakter.

Visszaadott érték

Ha sikeres, visszaadja a karaktert.

Megjegyzések

Ha van ilyen write position , a tagfüggvény írási pozícióban tárolja a _Ch , növeli a kimeneti puffer következő mutatóját, és visszaadja a traits_type::to_int_type(_Ch). Ellenkező esetben a függvény túlcsordulás(_Ch) értéket ad vissza.

példa

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

int main( )
{
   using namespace std;

   int i = cout.rdbuf( )->sputc( 'a' );
   cout << endl << ( char )i << endl;
}
a
a

basic_streambuf::köpet

Karaktersztringet helyez a streambe.

streamsize sputn(const char_type* ptr, streamsize count);

Paraméterek

ptr
A karaktersztring.

gróf
A karakterek száma.

Visszaadott érték

A streambe beszúrt karakterek száma.

Megjegyzések

A tagfüggvény xsputn(ptr, count). További információt a tag Megjegyzések szakaszában talál.

példa

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

int main()
{
    using namespace std;

    streamsize i = cout.rdbuf()->sputn("test", 4);
    cout << endl << i << endl;
}
test
4

basic_streambuf::stossc

Lépjen át a stream aktuális elemétől.

void stossc();

Megjegyzések

A tagfüggvény meghívja a sbumpc-et. Ennek a tagfüggvénynek a biztosításához nincs szükség implementációra.

példa

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

int main( )
{
   using namespace std;
   ifstream myfile( "basic_streambuf_stossc.txt", ios::in );

   myfile.rdbuf( )->stossc( );
   char i = myfile.rdbuf( )->sgetc( );
   cout << i << endl;
}

basic_streambuf::sungetc

Lekéri a karaktert a streamből.

int_type sungetc();

Visszaadott érték

A karaktert vagy a hibát adja vissza.

Megjegyzések

Ha rendelkezésre áll tartalék pozíció, a tagfüggvény a bemeneti puffer következő mutatóját dekrementálja, és visszaadja traits_type::a to_int_type(*gptr) értéket. Az utolsó beolvasott karaktert azonban nem mindig lehet meghatározni, hogy rögzíthető legyen az aktuális puffer állapotában. Ha ez igaz, akkor a függvény a pbackfail értéket adja vissza. A helyzet elkerülése érdekében kövesse nyomon a visszahozandó karaktert, és hívja sputbackc(ch)meg a karaktert , amely nem fog meghiúsulni, feltéve, hogy nem hívja meg a stream elején, és nem próbál meg egynél több karaktert visszatenni.

példa

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

int main( )
{
   using namespace std;

   ifstream myfile( "basic_streambuf_sungetc.txt", ios::in );

   // Read and increment
   int i = myfile.rdbuf( )->sbumpc( );
   cout << ( char )i << endl;

   // Read and increment
   i = myfile.rdbuf( )->sbumpc( );
   cout << ( char )i << endl;

   // Decrement, read, and do not increment
   i = myfile.rdbuf( )->sungetc( );
   cout << ( char )i << endl;

   i = myfile.rdbuf( )->sungetc( );
   cout << ( char )i << endl;

   i = myfile.rdbuf( )->sbumpc( );
   cout << ( char )i << endl;
}

basic_streambuf::swap

Az objektum értékeit a megadott basic_streambuf objektum értékeire cseréli.

void swap(basic_streambuf& right);

Paraméterek

jobb
Értékcserére basic_streambuf használt objektumra mutató lvalue-hivatkozás.

Megjegyzések

A védett tagfüggvény a megfelelő összes mutatóval cseréli a input buffer elemet és a mutatót output buffer. A right. elemet is kicseréli az locale objektummal.

basic_streambuf::sync

Védett virtuális függvény, amely megpróbálja szinkronizálni az ellenőrzött streameket a társított külső streamekkel.

virtual int sync();

Visszaadott érték

Ha a függvény nem sikerül, a függvény -1 értéket ad vissza. Az alapértelmezett viselkedés a nulla visszaadása.

Megjegyzések

sync a kimeneti puffer kezdő és következő mutatói közötti elemek írását foglalja magában. Ez nem foglalja magában az elemek visszaállítását a bemeneti puffer következő és végponti mutatói között.

basic_streambuf::traits_type

Típusnevet társít a Tr-sablon paraméterhez.

typedef Tr traits_type;

basic_streambuf::uflow

Védett virtuális függvény, amely kinyeri az aktuális elemet a bemeneti adatfolyamból.

virtual int_type uflow();

Visszaadott érték

Az aktuális elem.

Megjegyzések

A védett virtuális tagfüggvény megpróbálja kinyerni az aktuális elemet a bemeneti adatfolyamból, majd előrelépni az aktuális adatfolyam pozícióját, és visszaadni az elemet traits_type::to_int_type( ch) értékként. Ezt többféleképpen teheti meg:

  • Ha elérhető olvasási pozíció, akkor ch-t vesz fel az olvasási pozícióban tárolt elemként, és a bemeneti puffer következő mutatóját viszi előre.

  • Egy elemet közvetlenül, valamilyen külső forrásból beolvashat, és ch értékként kézbesítheti.

  • A közös bemeneti és kimeneti adatfolyamokkal rendelkező streampufferek olvasási pozícióját úgy teheti elérhetővé, hogy kiír egy külső célhelyet, a kimeneti puffer első és következő mutatói közötti elemek egy részét vagy mindegyikét. Vagy új vagy további tárolót is lefoglalhat a bemeneti pufferhez. A függvény ezután valamilyen külső forrásból beolvas egy vagy több elemet.

Ha a függvény nem sikerül, traits_type::eof értéket ad vissza, vagy kivételt ad vissza. Ellenkező esetben visszaadja a bemeneti adatfolyam aktuális elemét ch , a fent leírtak szerint konvertálva, és előre viszi a bemeneti puffer következő mutatóját. Az alapértelmezett viselkedés az alulcsordulás meghívása, és ha ez a függvény traits_type::eof értéket ad vissza, traits_type::eof értéket ad vissza. Ellenkező esetben a függvény visszaadja a bemeneti adatfolyam aktuális ch elemét, amelyet a korábban leírtak szerint konvertált, és a bemeneti puffer következő mutatóját viszi tovább.

basic_streambuf::alulcsordulás

Védett virtuális függvény, amely kinyeri az aktuális elemet a bemeneti adatfolyamból.

virtual int_type underflow();

Visszaadott érték

Az aktuális elem.

Megjegyzések

A védett virtuális tagfüggvény arra törekszik, hogy kinyerje az aktuális ch elemet a bemeneti adatfolyamból anélkül, hogy előrehaladt volna az aktuális streampozíció, és traits_type::( ch) értékként adja vissza. Ezt többféleképpen teheti meg:

  • Ha elérhető olvasási pozíció, akkor a ch az olvasási pozícióban tárolt elem. További információt a basic_streambuf osztály Megjegyzések szakaszában talál.

  • Elérhetővé teheti az olvasási pozíciót úgy, hogy új vagy további tárolót rendel a bemeneti pufferhez, majd beolvassa azokat külső forrásból, egy vagy több elemből. További információt a basic_streambuf osztály Megjegyzések szakaszában talál.

Ha a függvény nem sikerül, akkor traits_type:: értéket ad () vissza, vagy kivételt eredményez. Ellenkező esetben a bemeneti adatfolyam aktuális elemét adja vissza, a korábban leírtak szerint konvertálva. Az alapértelmezett viselkedés a visszatérés traits_type::eof().

A virtuális underflow függvény a szinkronizálási és túlcsordulási függvényekkel határozza meg a streambuf-származtatott osztály jellemzőit. Minden származtatott osztály eltérően implementálható underflow , de a hívó streamosztály felülete ugyanaz.

A underflow függvényt leggyakrabban az olyan nyilvános streambuf függvények hívják, mint az sgetc és az sgetn , ha a lekérési terület üres, de más osztályok, beleértve a streamosztályokat is, bármikor meghívhatók underflow .

A underflow függvény a beolvasási területet a bemeneti forrásból származó karakterekkel látja el. Ha a lekérési terület karaktereket tartalmaz, underflow az első karaktert adja vissza. Ha a get terület üres, kitölti a lekérési területet, és visszaadja a következő karaktert (amelyet a get területen hagy). Ha nincs több karakter, akkor underflow visszaadja EOF és üresen hagyja a lekérési területet.

Az osztályban strstreambuf az underflow mutatót úgy állítja be, hogy hozzáférjen a hívás által dinamikusan lefoglalt tárolóhozoverflow.

basic_streambuf::xsgetn

Védett virtuális függvény, amely elemeket nyer ki a bemeneti adatfolyamból.

Ez a módszer potenciálisan nem biztonságos, mivel a hívóra támaszkodva ellenőrzi, hogy az átadott értékek helyesek-e.

virtual streamsize xsgetn(
    char_type* ptr,
    streamsize count);

Paraméterek

ptr
A kinyert karaktereket tartalmazó puffer.

gróf
A kinyerni kívánt elemek száma.

Visszaadott érték

A kinyert elemek száma.

Megjegyzések

A védett virtuális tagfüggvény a bemeneti adatfolyam elemeinek megszámlálásához úgy nyeri ki az elemeket, mintha ismétlődő sbumpc-hívásokkal, és a ptr-től kezdődő tömbben tárolja őket. A kinyert elemek számát adja vissza.

basic_streambuf::xsputn

Védett virtuális függvény, amely elemeket szúr be a kimeneti adatfolyamba.

virtual streamsize xsputn(const char_type* ptr, streamsize count);

Paraméterek

ptr
Mutasson a beszúrni kívánt elemekre.

gróf
Beszúrandó elemek száma.

Visszaadott érték

A streambe beszúrt elemek száma.

Megjegyzések

A védett virtuális tagfüggvény legfeljebb darabszám elemeket szúr be a kimeneti adatfolyamba, mintha ismétlődő szputc-hívásokkal a ptr-től kezdődő tömbből szúrja be az elemeket. A karakterek beszúrása a kimeneti streambe az összes számkarakterek megírása után leáll, vagy ha a hívás sputc( count) visszakerül.traits::eof() A beszúrt elemek számát adja vissza.

Lásd még

Szálbiztonság a C++ Standard könyvtárban
iostream programozás
iostreams-egyezmények