Sdílet prostřednictvím


basic_streambuf – třída

Popisuje abstraktní základní třídu pro odvození vyrovnávací paměti datového proudu, která řídí přenos prvků do a z konkrétní reprezentace datového proudu.

Syntaxe

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

Parametry

Elem
Char_type.

Tr
Znak traits_type.

Poznámky

Šablona třídy popisuje abstraktní základní třídu pro odvození vyrovnávací paměti datového proudu, která řídí přenos prvků do a z konkrétní reprezentace datového proudu. Objekt třídy basic_streambuf pomáhá řídit datový proud s prvky typu Tr, označované také jako char_type, jejichž znakové vlastnosti jsou určeny třídou char_traits, označované také jako traits_type.

Každá vyrovnávací paměť datového proudu koncepčně řídí dva nezávislé datové proudy: jeden pro extrakci (vstup) a druhý pro vložení (výstup). Konkrétní reprezentace však může být buď z těchto datových proudů, nebo obě tyto datové proudy nepřístupné. Obvykle udržuje nějaký vztah mezi těmito dvěma datovými proudy. To, co vložíte do výstupního datového proudu basic_stringbuf<Elem, Tr> objektu, například, je to, co později extrahujete ze vstupního datového proudu. Když umístíte jeden proud basic_filebufElem<, Tr> objekt umístíte druhý proud společně.

Veřejné rozhraní šablony basic_streambuf tříd poskytuje operace, které jsou společné pro všechny vyrovnávací paměti datového proudu, ale specializované. Chráněné rozhraní poskytuje operace potřebné pro konkrétní reprezentaci datového proudu, aby fungovalo. Chráněné virtuální členské funkce umožňují přizpůsobit chování odvozené vyrovnávací paměti datového proudu pro konkrétní reprezentaci datového proudu. Každá odvozená vyrovnávací paměť datového proudu v této knihovně popisuje, jak se specializuje na chování svých chráněných virtuálních členských funkcí. Výchozí chování základní třídy, což je často dělat nic, je popsáno v tomto článku.

Zbývající chráněné členské funkce řídí kopírování do a z jakéhokoli úložiště dodaného pro přenosy do vyrovnávací paměti a z datových proudů. Vstupní vyrovnávací paměť je například charakterizována:

  • eback, ukazatel na začátek vyrovnávací paměti.

  • gptr, ukazatel na další prvek ke čtení.

  • egptr, ukazatel za koncem vyrovnávací paměti.

Podobně se výstupní vyrovnávací paměť vyznačuje:

  • pbase, ukazatel na začátek vyrovnávací paměti.

  • pptr, ukazatel na další prvek pro zápis.

  • epptr, ukazatel na konci vyrovnávací paměti.

Pro libovolnou vyrovnávací paměť se používá následující protokol:

  • Pokud je další ukazatel null, neexistuje žádná vyrovnávací paměť. Jinak všechny tři ukazatele ukazují na stejnou sekvenci. Je možné je bezpečně porovnat s pořadím.

  • Pro výstupní vyrovnávací paměť, pokud další ukazatel porovnává menší než koncový ukazatel, můžete uložit prvek na pozici zápisu určené dalším ukazatelem.

  • Pokud další ukazatel porovnává menší než koncový ukazatel vstupní vyrovnávací paměti, můžete přečíst prvek na pozici čtení určené dalším ukazatelem.

  • Pokud počáteční ukazatel porovnává menší než další ukazatel vstupní vyrovnávací paměti, můžete vrátit prvek na pozici zpětného umístění určené dekrementovaným dalším ukazatelem.

Všechny chráněné virtuální členské funkce, které píšete pro třídu odvozenou z basic_streambuf<Elem, Tr> musí spolupracovat při údržbě tohoto protokolu.

Objekt třídy basic_streambuf<Elemukládá Tr> šest dříve popsaných ukazatelů. Uloží také objekt národního prostředí do objektu národního prostředí typu pro potenciální použití odvozenou vyrovnávací pamětí datového proudu.

Konstruktory

Konstruktor Popis
basic_streambuf Vytvoří objekt typu basic_streambuf.

Typedefs

Název typu Popis
char_type Přidruží název typu k parametru Elem šablony.
int_type Přidruží název typu v oboru basic_streambuf k parametru Elem šablony.
off_type Přidruží název typu v oboru basic_streambuf k parametru Elem šablony.
pos_type Přidruží název typu v oboru basic_streambuf k parametru Elem šablony.
traits_type Přidruží název typu k parametru Tr šablony.

Členské funkce

Členová funkce Popis
eback Chráněná funkce, která vrací ukazatel na začátek vstupní vyrovnávací paměti.
egptr Chráněná funkce, která vrací ukazatel na konec vstupní vyrovnávací paměti.
epptr Chráněná funkce, která vrací ukazatel na konec výstupní vyrovnávací paměti.
gbump Chráněná funkce, která se přidá count k dalšímu ukazateli vstupní vyrovnávací paměti.
getloc Získá národní prostředí objektu basic_streambuf .
gptr Chráněná funkce, která vrací ukazatel na další prvek vstupní vyrovnávací paměti.
naplnit Chráněná virtuální funkce volat pubimbue.
in_avail Vrátí počet prvků, které jsou připravené ke čtení z vyrovnávací paměti.
přetečení Chráněná virtuální funkce, kterou lze volat při vložení nového znaku do plné vyrovnávací paměti.
pbackfail Chráněná virtuální členová funkce, která se pokusí vložit prvek zpět do vstupního datového proudu a pak ho nastavit jako aktuální prvek (na který odkazuje další ukazatel).
pbase Chráněná funkce, která vrací ukazatel na začátek výstupní vyrovnávací paměti.
pbump Chráněná funkce, která se přidá count k dalšímu ukazateli výstupní vyrovnávací paměti.
pptr Chráněná funkce, která vrací ukazatel na další prvek výstupní vyrovnávací paměti.
pubimbue basic_streambuf Nastaví národní prostředí objektu.
pubseekoff Volá hledání, chráněnou virtuální funkci, která je přepsána v odvozené třídě.
pubseekpos Volá funkce seekpos, chráněnou virtuální funkci, která je přepsána v odvozené třídě a resetuje aktuální pozici ukazatele.
pubsetbuf Volá setbuf, chráněnou virtuální funkci, která je přepsána v odvozené třídě.
pubsync Volá synchronizaci, chráněnou virtuální funkci, která je přepsána v odvozené třídě a aktualizuje externí datový proud přidružený k této vyrovnávací paměti.
sbumpc Přečte a vrátí aktuální prvek a přesune ukazatel datového proudu.
hledání Chráněná virtuální členová funkce se pokusí změnit aktuální pozice pro řízené datové proudy.
hledání Chráněná virtuální členová funkce se pokusí změnit aktuální pozice pro řízené datové proudy.
setbuf Chráněná virtuální členová funkce provádí operaci určitou pro každou odvozenou vyrovnávací paměť datového proudu.
setg Chráněná funkce, která se ukládá _Gbeg do počátečního ukazatele, _Gnext v dalším ukazateli a _Gend na konci ukazatele pro vstupní vyrovnávací paměť.
setp Chráněná funkce, která ukládá _Pbeg počáteční ukazatel a _Pend koncový ukazatel pro výstupní vyrovnávací paměť.
sgetc Vrátí aktuální prvek bez změny pozice ve streamu.
sgetn Vrátí počet přečtených prvků.
showmanyc Chráněná virtuální členová funkce, která vrací počet znaků, které lze extrahovat ze vstupního datového proudu. Zajišťuje také, že program nebude podléhat neomezenému čekání.
snextc Přečte aktuální prvek a vrátí následující prvek.
sputbackc char_type Vloží do datového proudu.
sputc Vloží znak do datového proudu.
sputn Vloží řetězec znaků do datového proudu.
stossc Přesunutí za aktuální prvek v datovém proudu
sungetc Získá znak ze streamu.
vyměnit Vymění hodnoty v tomto objektu pro hodnoty v zadaném basic_streambuf parametru objektu.
synchronizovat Chráněná virtuální funkce, která se pokusí synchronizovat řízené streamy s libovolnými přidruženými externími streamy.
uflow Chráněná virtuální funkce, která extrahuje aktuální prvek ze vstupního datového proudu.
podtečení Chráněná virtuální funkce, která extrahuje aktuální prvek ze vstupního datového proudu.
xsgetn Chráněná virtuální funkce, která extrahuje prvky ze vstupního datového proudu.
xsputn Chráněná virtuální funkce, která vloží prvky do výstupního datového proudu.

Operátory

Operátor Popis
operator= Přiřadí hodnoty tohoto objektu z jiného basic_streambuf objektu.

Požadavky

Header:<streambuf>

Obor názvů: std

basic_streambuf::basic_streambuf

Vytvoří objekt typu basic_streambuf.

basic_streambuf();

basic_streambuf(const basic_streambuf& right);

Parametry

Vpravo
Lvalue odkaz na basic_streambuf objekt, který slouží k nastavení hodnot pro tento basic_streambuf objekt.

Poznámky

První chráněný konstruktor ukládá ukazatel null ve všech ukazatelích, které řídí vstupní vyrovnávací paměť a výstupní vyrovnávací paměť. Ukládá se také locale::classic v objektu národního prostředí. Další informace najdete v tématu národní prostředí::classic.

Druhý chráněný konstruktor zkopíruje ukazatele a národní prostředí zprava.

basic_streambuf::char_type

Přidruží název typu k parametru šablony Elem .

typedef Elem char_type;

basic_streambuf::eback

Chráněná funkce, která vrací ukazatel na začátek vstupní vyrovnávací paměti.

char_type *eback() const;

Návratová hodnota

Ukazatel na začátek vstupní vyrovnávací paměti.

basic_streambuf::egptr

Chráněná funkce, která vrací ukazatel na konec vstupní vyrovnávací paměti.

char_type *egptr() const;

Návratová hodnota

Ukazatel na konci vstupní vyrovnávací paměti.

basic_streambuf::epptr

Chráněná funkce, která vrací ukazatel na konec výstupní vyrovnávací paměti.

char_type *epptr() const;

Návratová hodnota

Ukazatel nad koncem výstupní vyrovnávací paměti.

basic_streambuf::gbump

Chráněná funkce, která přidá počet k dalšímu ukazateli vstupní vyrovnávací paměti.

void gbump(int count);

Parametry

count
Množství, o které se má ukazatel posunout.

basic_streambuf::getloc

Získá národní prostředí basic_streambuf objektu.

locale getloc() const;

Návratová hodnota

Uložený objekt národního prostředí.

Poznámky

Související informace najdete v tématu ios_base::getloc.

Příklad

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

Chráněná funkce, která vrací ukazatel na další prvek vstupní vyrovnávací paměti.

char_type *gptr() const;

Návratová hodnota

Ukazatel na další prvek vstupní vyrovnávací paměti.

basic_streambuf::imbue

Chráněná virtuální funkce volat pubimbue.

virtual void imbue(const locale& _Loc);

Parametry

_Loc
Odkaz na národní prostředí.

Poznámky

Výchozí chování spočívá v tom, že nic neuděláte.

basic_streambuf::in_avail

Vrátí počet prvků, které jsou připravené ke čtení z vyrovnávací paměti.

streamsize in_avail();

Návratová hodnota

Počet prvků, které jsou připravené ke čtení z vyrovnávací paměti.

Poznámky

Pokud je k dispozici pozice čtení, vrátí členová funkce egptr - gptr. V opačném případě vrátí showmanyc.

Příklad

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

Přidruží název typu v rámci basic_streambuf oboru k jednomu z typů v parametru šablony.

typedef typename traits_type::int_type int_type;

basic_streambuf::off_type

Přidruží název typu v rámci basic_streambuf oboru k jednomu z typů v parametru šablony.

typedef typename traits_type::off_type off_type;

basic_streambuf::operator=

Přiřadí hodnoty tohoto objektu z jiného basic_streambuf objektu.

basic_streambuf& operator=(const basic_streambuf& right);

Parametry

Vpravo
Lvalue odkaz na basic_streambuf objekt, který slouží k přiřazení hodnot k tomuto objektu.

Poznámky

Operátor chráněného člena kopíruje zprava ukazatele, které řídí vstupní vyrovnávací paměť a výstupní vyrovnávací paměť. Ukládá také right.getloc() v locale objectsouboru . *thisVrátí .

basic_streambuf::overflow

Chráněná virtuální funkce, kterou lze volat při vložení nového znaku do plné vyrovnávací paměti.

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

Parametry

_Meta
Znak, který se má vložit do vyrovnávací paměti, nebo traits_type::eof.

Návratová hodnota

Pokud funkce nemůže být úspěšná, vrátí traits_type::eof nebo vyvolá výjimku. V opačném případě vrátí traits_type::not_eof(_ Meta). Výchozí chování je vrátit traits_type::eof.

Poznámky

Pokud se _Meta nerovná traits_type::eof, chráněná virtuální členová funkce se snaží vložit prvek traits_type::to_char_type(_Meta) do výstupního datového proudu. Může to udělat různými způsoby:

  • write position Pokud je k dispozici, může prvek uložit do pozice zápisu a zvýšit další ukazatel pro výstupní vyrovnávací paměť.

  • Může zpřístupnit pozici zápisu přidělením nového nebo dalšího úložiště pro výstupní vyrovnávací paměť.

  • Může zpřístupnit pozici zápisu tak, že zapíše do nějakého externího cíle, některé nebo všechny prvky mezi začátkem a dalšími ukazateli pro výstupní vyrovnávací paměť.

Funkce virtuálního přetečení společně s funkcemi synchronizace a podtečení definuje charakteristiky odvozené třídy streambuf. Každá odvozená třída může implementovat přetečení odlišně, ale rozhraní s volající stream třídy je stejné.

Funkce overflow je nejčastěji volána veřejnými streambuf funkcemi, jako sputc je a sputn kdy je oblast vložení plná, ale jiné třídy, včetně tříd datových proudů, mohou volat overflow kdykoli.

Funkce využívá znaky v oblasti vložení mezi pbase ukazateli a pptr potom znovu inicializuje oblast vložení. Funkce overflow musí také využívat nCh (pokud nCh není EOF) nebo se může rozhodnout, že tento znak umístí do nové oblasti put, aby se spotřeboval při dalším volání.

Definice využívání se liší mezi odvozené třídy. Třída například filebuf zapisuje své znaky do souboru, zatímco strstreambuf třída je uchovává ve své vyrovnávací paměti a (pokud je vyrovnávací paměť označena jako dynamická) rozšiřuje vyrovnávací paměť v reakci na volání přetečení. Toto rozšíření se dosahuje uvolněním staré vyrovnávací paměti a nahrazením novou, větší. Ukazatele jsou podle potřeby upraveny.

basic_streambuf::p backfail

Chráněná virtuální členová funkce, která se pokusí vložit prvek zpět do vstupního datového proudu a pak ho nastavit jako aktuální prvek (na který odkazuje další ukazatel).

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

Parametry

_Meta
Znak, který se má vložit do vyrovnávací paměti, nebo traits_type::eof.

Návratová hodnota

Pokud funkce nemůže být úspěšná, vrátí traits_type::eof nebo vyvolá výjimku. V opačném případě vrátí jinou hodnotu. Výchozí chování je vrátit traits_type::eof.

Poznámky

Pokud _Meta porovnává rovna traits_type::eof, prvek, který se má nasdílit zpět, je účinně ten, který je již ve streamu před aktuálním prvkem. Jinak se tento prvek nahradí traits_type::to_char_type(_Meta). Funkce může vrátit prvek různými způsoby:

  • Pokud je k dispozici pozice putbacku, může prvek uložit do pozice putback a dekrementovat další ukazatel vstupní vyrovnávací paměti.

  • Může zpřístupnit pozici zpětného uložení přidělením nového nebo dalšího úložiště pro vstupní vyrovnávací paměť.

  • Pro vyrovnávací paměť datového proudu s běžnými vstupními a výstupními datovými proudy může být k dispozici umístění zpětného umístění zápisem, do některého externího cíle, některých nebo všech prvků mezi začátkem a dalšími ukazateli pro výstupní vyrovnávací paměť.

basic_streambuf::p báze

Chráněná funkce, která vrací ukazatel na začátek výstupní vyrovnávací paměti.

char_type *pbase() const;

Návratová hodnota

Ukazatel na začátek výstupní vyrovnávací paměti.

basic_streambuf::p bump

Chráněná funkce, která přidá počet k dalšímu ukazateli výstupní vyrovnávací paměti.

void pbump(int count);

Parametry

count
Početznakůch

basic_streambuf::p os_type

Přidruží název typu v rámci basic_streambuf oboru k jednomu z typů v parametru šablony.

typedef typename traits_type::pos_type pos_type;

basic_streambuf::p ptr

Chráněná funkce, která vrací ukazatel na další prvek výstupní vyrovnávací paměti.

char_type *pptr() const;

Návratová hodnota

Ukazatel na další prvek výstupní vyrovnávací paměti.

basic_streambuf::p ubimbue

Nastaví národní prostředí objektu basic_streambuf.

locale pubimbue(const locale& _Loc);

Parametry

_Loc
Odkaz na národní prostředí.

Návratová hodnota

Předchozí hodnota uložená v objektu národního prostředí.

Poznámky

Členské funkce ukládá _ Loc v objektu národního prostředí a volá imbue.

Příklad

Podívejte se na basic_ios::imbue příkladu, který používá pubimbue.

basic_streambuf::p ubseekoff

Volá hledání, chráněnou virtuální funkci, která je přepsána v odvozené třídě.

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

Parametry

_Pryč
Pozice, která se má hledat vzhledem k _Way.

_Cesta
Výchozí bod pro operace posunu. Informace o možných hodnotách najdete v nástroji seekdir .

_Který
Určuje režim pozice ukazatele. Výchozí nastavení je umožnit úpravu pozic čtení a zápisu.

Návratová hodnota

Vrátí novou pozici nebo neplatnou pozici datového proudu (seekoff(_ Off, _Way, _Which)).

Poznámky

Přesune ukazatel vzhledem k _Way.

basic_streambuf::p ubseekpos

Volá funkce seekpos, chráněnou virtuální funkci, která je přepsána v odvozené třídě, a resetuje aktuální pozici ukazatele.

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

Parametry

_Sp
Pozice, na které se má hledat.

_Který
Určuje režim pozice ukazatele. Výchozí nastavení je umožnit úpravu pozic čtení a zápisu.

Návratová hodnota

Nová pozice nebo neplatná pozice datového proudu. Chcete-li zjistit, zda je pozice datového proudu neplatná, porovnejte návratovou hodnotu s pos_type(off_type(-1)).

Poznámky

Členová funkce vrátí funkce seekpos(_ Sp; _Which).

basic_streambuf::p ubsetbuf

Volá setbuf, chráněnou virtuální funkci, která je přepsána v odvozené třídě.

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

Parametry

_Vyrovnávací paměť
Ukazatel na char_type tuto instanci.

count
Velikost vyrovnávací paměti.

Návratová hodnota

Vrátí setbuf( _Buffer, count).

basic_streambuf::p ubsync

Volá synchronizaci, chráněnou virtuální funkci, která je přepsána v odvozené třídě, a aktualizuje externí datový proud přidružený k této vyrovnávací paměti.

int pubsync();

Návratová hodnota

Vrátí synchronizaci nebo -1, pokud dojde k chybě.

basic_streambuf::sbumpc

Přečte a vrátí aktuální prvek a přesune ukazatel datového proudu.

int_type sbumpc();

Návratová hodnota

Aktuální prvek.

Poznámky

Pokud je k dispozici pozice čtení, vrátí členová funkce traits_type::to_int_type(*gptr) a zvýší další ukazatel vstupní vyrovnávací paměti. V opačném případě vrátí uflow.

Příklad

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

Chráněná virtuální členová funkce, která se pokouší změnit aktuální pozice pro řízené datové proudy.

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

Parametry

_Pryč
Pozice, která se má hledat vzhledem k _Way.

_Cesta
Výchozí bod pro operace posunu. Informace o možných hodnotách najdete v nástroji seekdir .

_Který
Určuje režim pozice ukazatele. Výchozí nastavení je umožnit úpravu pozic čtení a zápisu.

Návratová hodnota

Vrátí novou pozici nebo neplatnou pozici datového proudu (seekoff _ Vypnuto, _Way, _Which)).

Poznámky

Nové umístění je určeno takto:

  • Pokud _Way == ios_base::begje nová pozice začátek streamu plus _ Vypnuto.

  • Pokud _Way == ios_base::curje nová pozice aktuální pozice datového proudu plus _ Vypnuto.

  • Pokud _Way == ios_base::end, nová pozice je konec streamu plus _ Vypnuto.

Obvykle platí, že pokud je hodnota &ios_base::in nenulová, vstupní datový proud je ovlivněn a pokud je hodnota &ios_base::out nenulová, výstupní datový proud je ovlivněn. Skutečné použití tohoto parametru se však u odvozených vyrovnávacích pamětí streamu liší.

Pokud je funkce úspěšná při změně pozice nebo pozic toku, vrátí výslednou pozici datového proudu nebo jednu z výsledných pozic datového proudu. V opačném případě vrátí neplatnou pozici datového proudu. Výchozí chování je vrátit neplatnou pozici datového proudu.

basic_streambuf::seekpos

Chráněná virtuální členová funkce, která se pokouší změnit aktuální pozice pro řízené datové proudy.

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

Parametry

_Sp
Pozice, na které se má hledat.

_Který
Určuje režim pozice ukazatele. Výchozí nastavení je umožnit úpravu pozic čtení a zápisu.

Návratová hodnota

Nová pozice nebo neplatná pozice datového proudu. Chcete-li zjistit, zda je pozice datového proudu neplatná, porovnejte návratovou hodnotu s pos_type(off_type(-1)).

Poznámky

Nová pozice je _ Sp.

Obvykle platí, že pokud je hodnota &ios_base::in nenulová, vstupní datový proud je ovlivněn a pokud je hodnota &ios_base::out nenulová, výstupní datový proud je ovlivněn. Skutečné použití tohoto parametru se však u odvozených vyrovnávacích pamětí streamu liší.

Pokud je funkce úspěšná při změně pozice nebo pozic toku, vrátí výslednou pozici datového proudu nebo jednu z výsledných pozic datového proudu. V opačném případě vrátí neplatnou pozici datového proudu (-1). Výchozí chování je vrátit neplatnou pozici datového proudu.

basic_streambuf::setbuf

Chráněná virtuální členová funkce, která provádí operaci určitou pro každou odvozenou vyrovnávací paměť datového proudu.

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

Parametry

_Vyrovnávací paměť
Ukazatel na vyrovnávací paměť.

count
Velikost vyrovnávací paměti.

Návratová hodnota

Výchozí chování je vrátit this.

Poznámky

Viz basic_filebuf. setbuf poskytuje oblast paměti pro streambuf objekt, který se má použít. Způsob použití vyrovnávací paměti v definovaných v odvozených třídách.

basic_streambuf::setg

Chráněná funkce, která ukládá _ Gbeg na počáteční ukazatel, _Gnext v dalším ukazateli a _Gend na konci ukazatele pro vstupní vyrovnávací paměť.

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

Parametry

_Gbeg
Ukazatel na začátek vyrovnávací paměti.

_Gnext
Ukazatel na místo uprostřed vyrovnávací paměti.

_Gend
Ukazatel na konec vyrovnávací paměti.

basic_streambuf::setp

Chráněná funkce, která ukládá _Pbeg na počáteční ukazatel a _Pend na koncovém ukazateli pro výstupní vyrovnávací paměť.

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

Parametry

_Pbeg
Ukazatel na začátek vyrovnávací paměti.

_Odložit rozhodnutí
Ukazatel na konec vyrovnávací paměti.

basic_streambuf::sgetc

Vrátí aktuální prvek bez změny pozice ve streamu.

int_type sgetc();

Návratová hodnota

Aktuální prvek.

Poznámky

Pokud je k dispozici pozice čtení, vrátí členová funkce traits_type::to_int_type( *gptr). V opačném případě vrátí podtečení.

Příklad

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

Extrahuje až počet znaků ze vstupní vyrovnávací paměti a uloží je do zadaného ptru vyrovnávací paměti.

Tato metoda je potenciálně nebezpečná, protože volající spoléhá na kontrolu správnosti předaných hodnot.

streamsize sgetn(
    char_type* ptr,
    streamsize count);

Parametry

ptr
Vyrovnávací paměť obsahující extrahované znaky.

count
Počet prvků, které se mají přečíst.

Návratová hodnota

Počet přečtených prvků. Další informace najdete v tématu streamsize další informace.

Poznámky

Členská funkce vrátí xsgetn( ptr, count).

Příklad

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

Chráněná virtuální členová funkce, která vrací počet znaků, které je možné extrahovat ze vstupního datového proudu, a zajistit, aby program nebyl předmětem neomezeného čekání.

virtual streamsize showmanyc();

Návratová hodnota

Výchozí chování je vrátit nulu.

basic_streambuf::snextc

Přečte aktuální prvek a vrátí následující prvek.

int_type snextc();

Návratová hodnota

Další prvek v datovém proudu.

Poznámky

Členská funkce volá sbumpc a pokud tato funkce vrátí traits_type::eof, vrátí traits_type::eof. V opačném případě vrátí sgetc.

Příklad

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

Vloží do datového proudu char_type.

int_type sputbackc(char_type _Ch);

Parametry

_Ch
Znak.

Návratová hodnota

Vrátí znak nebo chybu.

Poznámky

Pokud je k dispozici pozice pro vložení a _Ch porovnává rovna znaku uloženému v této pozici, členová funkce sníží další ukazatel vstupní vyrovnávací paměti a vrátí traits_type::to_int_type( _Ch). V opačném případě vrátí chybu pbackfail( _Ch).

Příklad

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

Vloží znak do datového proudu.

int_type sputc(char_type _Ch);

Parametry

_Ch
Znak.

Návratová hodnota

Vrátí znak, pokud je úspěšný.

Poznámky

write position Pokud je k dispozici, členová funkce ukládá _Ch na pozici zápisu, zvýší další ukazatel výstupní vyrovnávací paměti a vrátí traits_type::to_int_type( _Ch). V opačném případě vrátí přetečení( _Ch).

Příklad

// 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::sputn

Vloží řetězec znaků do datového proudu.

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

Parametry

ptr
Řetězec znaků.

count
Počet znaků.

Návratová hodnota

Počet znaků vložených do datového proudu

Poznámky

Členská funkce vrátí hodnotu xsputn( ptr, count). Další informace naleznete v části Poznámky tohoto člena.

Příklad

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

Přesunutí za aktuální prvek v datovém proudu

void stossc();

Poznámky

Členská funkce volá sbumpc. K zadání této členské funkce není nutná implementace.

Příklad

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

Získá znak ze streamu.

int_type sungetc();

Návratová hodnota

Vrátí znak nebo chybu.

Poznámky

Pokud je k dispozici pozice putbacku, členová funkce dekrementuje další ukazatel vstupní vyrovnávací paměti a vrátí traits_type::to_int_type( *gptr). Není však vždy možné určit poslední přečtený znak, aby se mohl zachytit ve stavu aktuální vyrovnávací paměti. Pokud je to pravda, vrátí funkce pbackfail. Chcete-li se této situaci vyhnout, sledujte znak, který se má vrátit zpět a volat sputbackc(ch), což nebude neúspěšné za předpokladu, že ho nezavoláte na začátku datového proudu a nepokoušíte se vrátit více než jeden znak.

Příklad

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

Vymění hodnoty v tomto objektu pro hodnoty v zadaném basic_streambuf objektu.

void swap(basic_streambuf& right);

Parametry

Vpravo
Lvalue odkaz na basic_streambuf objekt, který se používá k výměně hodnot.

Poznámky

Chráněná členová funkce se vyměňuje se správnými ukazateli , které řídí a input buffer output buffer. Také vyměňuje right.getloc() s objektem locale .

basic_streambuf::sync

Chráněná virtuální funkce, která se pokusí synchronizovat řízené streamy s libovolnými přidruženými externími streamy.

virtual int sync();

Návratová hodnota

Pokud funkce nemůže být úspěšná, vrátí hodnotu -1. Výchozí chování je vrátit nulu.

Poznámky

sync zahrnuje zápis všech prvků mezi začátkem a dalšími ukazateli pro výstupní vyrovnávací paměť. Nezahrnuje vložení žádných prvků mezi dalšími a koncovými ukazateli vstupní vyrovnávací paměti.

basic_streambuf::traits_type

Přidruží název typu k parametru šablony Tr .

typedef Tr traits_type;

basic_streambuf::uflow

Chráněná virtuální funkce, která extrahuje aktuální prvek ze vstupního datového proudu.

virtual int_type uflow();

Návratová hodnota

Aktuální prvek.

Poznámky

Chráněná virtuální členová funkce se pokusí extrahovat aktuální prvek ch ze vstupního datového proudu, pak přejít na aktuální pozici datového proudu a vrátit prvek jako traits_type::to_int_type( ch). Může to udělat různými způsoby:

  • Pokud je pozice čtení k dispozici, přebírá funkci ch jako prvek uložený v pozici čtení a posune další ukazatel pro vstupní vyrovnávací paměť.

  • Může číst prvek přímo z nějakého externího zdroje a doručit ho jako hodnotu ch.

  • Pro vyrovnávací paměť datového proudu s běžnými vstupními a výstupními datovými proudy může zpřístupnit pozici čtení tím, že zapíše do nějakého externího cíle, některé nebo všechny prvky mezi začátkem a dalšími ukazateli pro výstupní vyrovnávací paměť. Nebo může přidělit nové nebo další úložiště pro vstupní vyrovnávací paměť. Funkce se pak přečte z některého externího zdroje, jednoho nebo více prvků.

Pokud funkce nemůže být úspěšná, vrátí traits_type::eof nebo vyvolá výjimku. V opačném případě vrátí aktuální prvek ch ve vstupním datovém proudu, převedený podle popisu výše a přejde na další ukazatel vstupní vyrovnávací paměti. Výchozí chování je volat podtečení a pokud tato funkce vrátí traits_type::eof, vrátí traits_type::eof. V opačném případě funkce vrátí aktuální prvek ch ve vstupním datovém proudu, převedený podle předchozího popisu a přejde na další ukazatel vstupní vyrovnávací paměti.

basic_streambuf::underflow

Chráněná virtuální funkce pro extrahování aktuálního prvku ze vstupního datového proudu

virtual int_type underflow();

Návratová hodnota

Aktuální prvek.

Poznámky

Chráněná virtuální členová funkce usiluje o extrakci aktuálního prvku ch ze vstupního proudu, aniž by se posunovala aktuální pozice proudu, a vrací ji jakotraits_type:: to_int_type( ch). Může to udělat různými způsoby:

  • Pokud je k dispozici pozice čtení, ch je prvek uložený v pozici čtení. Další informace naleznete v části Poznámky třídy basic_streambuf.

  • Může zpřístupnit pozici čtení přidělením nového nebo dalšího úložiště pro vstupní vyrovnávací paměť a následným čtením z některého externího zdroje, jednoho nebo více prvků. Další informace naleznete v části Poznámky třídy basic_streambuf.

Pokud funkce nemůže být úspěšná, vrátí traits_type::hodnotu eof() nebo vyvolá výjimku. V opačném případě vrátí aktuální prvek ve vstupním datovém proudu převedený podle předchozího popisu. Výchozí chování je vrátit traits_type::eof().

Virtuální underflow funkce, s funkcí synchronizace a přetečení , definuje charakteristiky streambuf-odvozené třídy. Každá odvozená třída může implementovat underflow odlišně, ale rozhraní s volající stream třídy je stejné.

Funkce underflow je nejčastěji volána veřejnými streambuf funkcemi, jako jsou sgetc a sgetn , když je oblast get prázdná, ale jiné třídy, včetně tříd datových proudů, mohou volat underflow kdykoli.

Funkce underflow poskytuje oblast get se znaky ze vstupního zdroje. Pokud oblast get obsahuje znaky, underflow vrátí první znak. Pokud je oblast get prázdná, vyplní oblast get a vrátí další znak (který opustí v oblasti get). Pokud nejsou k dispozici žádné další znaky, underflow vrátí a EOF ponechá oblast get prázdnou.

strstreambuf Ve třídě upraví ukazatel egptr pro přístup k úložišti, underflow který byl dynamicky přidělen voláním overflow.

basic_streambuf::xsgetn

Chráněná virtuální funkce pro extrakci prvků ze vstupního datového proudu

Tato metoda je potenciálně nebezpečná, protože volající spoléhá na kontrolu správnosti předaných hodnot.

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

Parametry

ptr
Vyrovnávací paměť obsahující extrahované znaky.

count
Počet prvků, které se mají extrahovat.

Návratová hodnota

Počet extrahovaných prvků.

Poznámky

Chráněná virtuální členská funkce extrahuje z vstupního datového proudu prvky, jako by opakovaným voláním sbumpc a ukládá je do pole začínajícím na ptr. Vrátí počet extrahovaných prvků.

basic_streambuf::xsputn

Chráněná virtuální funkce pro vložení prvků do výstupního datového proudu

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

Parametry

ptr
Ukazatel na prvky, které chcete vložit.

count
Počet prvků, které se mají vložit

Návratová hodnota

Počet prvků vložených do datového proudu

Poznámky

Chráněná virtuální členská funkce vloží do výstupního datového proudu až počet prvků, jako by opakovanými voláními sputc, od pole začínajícího na ptr. Vložení znaků do výstupního datového proudu se zastaví, jakmile budou zapsány všechny znaky počtu , nebo pokud by volání sputc( count) vrátilo traits::eof(). Vrátí počet vložených prvků.

Viz také

Bezpečný přístup z více vláken ve standardní knihovně C++
iostream – programování
iostreams – konvence