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