basic_stringbuf – třída
Popisuje vyrovnávací paměť datového proudu, která řídí přenos prvků typu Elem
, jejichž znakové vlastnosti jsou určeny třídou Tr
, do a z posloupnosti prvků uložených v objektu pole.
Syntaxe
template <class Elem, class Tr = char_traits<Elem>,
class Alloc = allocator<Elem>>
class basic_stringbuf : public basic_streambuf<Elem, Tr>
Parametry
Aloka
Třída alokátoru
Elem
Typ základního prvku řetězce.
Tr
Znakové vlastnosti specializované na základní prvek řetězce.
Poznámky
Objekt je přidělen, rozšířen a uvolněn podle potřeby tak, aby vyhovoval změnám v sekvenci.
Objekt třídy basic_stringbuf<Elem
, Tr
uloží> Alloc
kopii argumentuios_base::
openmode z jeho konstruktoru jako stringbuf
režim režimu:
Pokud
mode & ios_base::in
je nenulová, vstupní vyrovnávací paměť je přístupná. Další informace najdete v tématu basic_streambuf třída.Pokud
mode & ios_base::out
je nenulová, výstupní vyrovnávací paměť je přístupná.
Konstruktory
Konstruktor | Popis |
---|---|
basic_stringbuf | Vytvoří objekt typu basic_stringbuf . |
Typedefs
Název typu | Popis |
---|---|
allocator_type | Typ je synonymem parametru šablony Alloc. |
char_type | Přidruží název typu k parametru šablony Elem . |
int_type | Tento typ v basic_filebuf rozsahu 's ekvivalentem typu stejného názvu v oboru Tr . |
off_type | Tento typ v basic_filebuf rozsahu 's ekvivalentem typu stejného názvu v oboru Tr . |
pos_type | Tento typ v basic_filebuf rozsahu 's ekvivalentem typu stejného názvu v oboru Tr . |
traits_type | Přidruží název typu k parametru šablony Tr . |
Členské funkce
Členová funkce | Popis |
---|---|
přetečení | Chráněná virtuální funkce, která se dá volat při vložení nového znaku do plné vyrovnávací paměti. |
pbackfail | Chráněná virtuální členová funkce se pokusí vrátit prvek do vstupní vyrovnávací paměti a pak ho nastaví jako aktuální prvek (na který odkazuje další ukazatel). |
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. |
Str | Nastaví nebo získá text do vyrovnávací paměti řetězce beze změny pozice zápisu. |
swap | |
podtečení | Chráněná virtuální členová funkce pro extrahování aktuálního prvku ze vstupního datového proudu. |
Požadavky
Header:<sstream>
Obor názvů: std
basic_stringbuf::allocator_type
Typ je synonymem parametru šablony Alloc.
typedef Alloc allocator_type;
basic_stringbuf::basic_stringbuf
Vytvoří objekt typu basic_stringbuf
.
basic_stringbuf(
ios_base::openmode _Mode = ios_base::in | ios_base::out);
basic_stringbuf(
const basic_string<Elem, Tr, Alloc>& str,
ios_base::openmode _Mode = ios_base::in | ios_base::out);
Parametry
_Režim
Jeden z výčtů v ios_base::openmode.
Str
Objekt typu basic_string.
Poznámky
První konstruktor ukládá ukazatel null ve všech ukazatelích, které řídí vstupní vyrovnávací paměť a výstupní vyrovnávací paměť. Další informace naleznete v části Poznámky třídy basic_streambuf. Ukládá také _Mode jako režim stringbuf. Další informace naleznete v části Poznámky třídy basic_stringbuf.
Druhý konstruktor přidělí kopii sekvence řízené řetězcovým objektem str. Pokud _Mode & ios_base::in
je nenulová, nastaví vstupní vyrovnávací paměť pro zahájení čtení na začátku sekvence. Pokud _Mode & ios_base::out
je nenulová, nastaví výstupní vyrovnávací paměť pro zahájení zápisu na začátku sekvence. Ukládá také _Mode jako režim stringbuf. Další informace naleznete v části Poznámky třídy basic_stringbuf.
basic_stringbuf::char_type
Přidruží název typu k parametru šablony Elem .
typedef Elem char_type;
basic_stringbuf::int_type
Nastaví tento typ v rozsahu basic_filebuf ekvivalentem typu stejného názvu v Tr
oboru.
typedef typename traits_type::int_type int_type;
basic_stringbuf::off_type
Nastaví tento typ v rozsahu basic_filebuf ekvivalentem typu stejného názvu v Tr
oboru.
typedef typename traits_type::off_type off_type;
basic_stringbuf::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í hodnotu traits_type::eof
. V opačném případě vrátí traits_type::not_eof(_ Meta).
Poznámky
Pokud _Meta nerovná traits_type::eof, chráněná virtuální členová funkce se pokusí vložit prvek traits_type::to_char_type(_Meta) do výstupní vyrovnávací paměti. Může to udělat různými způsoby:
Pokud je k dispozici pozice zápisu, 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ěť. Rozšíření výstupní vyrovnávací paměti tímto způsobem také rozšiřuje veškerou přidruženou vstupní vyrovnávací paměť.
basic_stringbuf::p backfail
Chráněná virtuální členová funkce se pokusí vrátit prvek do vstupní vyrovnávací paměti 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í hodnotu traits_type::eof
. V opačném případě vrátí traits_type::not_eof(_ Meta).
Poznámky
Pokud _Meta porovnává rovna traits_type::eof, prvek, který se má vrátit zpět, je v podstatě ten, který je již ve streamu před aktuálním prvkem. Jinak se tento prvek nahradí bajtem = traits_type::to_char_type(_ Meta). Funkce může vrátit prvek různými způsoby:
Pokud je k dispozici pozice putbacku a prvek uložený tam porovnává rovnající se bajtu, může dekrementovat další ukazatel vstupní vyrovnávací paměti.
Pokud je k dispozici pozice putbacku a pokud režim stringbuf umožňuje změnit sekvenci ( režim & ios_base::out je nenulový), může uložit bajt do pozice putback a dekrementovat další ukazatel vstupní vyrovnávací paměti.
basic_stringbuf::p os_type
Nastaví tento typ v rozsahu basic_filebuf ekvivalentem typu stejného názvu v Tr
oboru.
typedef typename traits_type::pos_type pos_type;
basic_stringbuf::seekoff
Chráněná virtuální členová funkce se pokusí změnit aktuální pozice pro řízené datové proudy.
virtual pos_type seekoff(
off_type _Off,
ios_base::seekdir _Way,
ios_base::openmode _Mode = ios_base::in | ios_base::out);
Parametry
_Pryč
Pozice, která se má hledat vzhledem k _Way. Další informace najdete v tématu basic_stringbuf::off_type.
_Cesta
Výchozí bod pro operace posunu. Informace o možných hodnotách najdete v tématu ios_base::seekdir .
_Režim
Určuje režim pozice ukazatele. Výchozí nastavení je umožnit úpravu pozic čtení a zápisu. Další informace najdete v tématu ios_base::openmode.
Návratová hodnota
Vrátí novou pozici nebo neplatnou pozici datového proudu.
Poznámky
Pro objekt třídy basic_stringbuf<Elem, Tr, Alloc>
se pozice datového proudu skládá čistě z posunu datového proudu. Odsazení nuly označuje první prvek řízené sekvence.
Nové umístění je určeno takto:
Pokud
_Way
==ios_base::beg
, nová pozice je začátek streamu plus _Off.Pokud
_Way
==ios_base::cur
je nová pozice aktuální pozice datového proudu plus _Off.Pokud
_Way
==ios_base::end
, nová pozice je konec datového proudu plus _Off.
Pokud _Mode & ios_base::in
je nenulová, funkce změní další pozici pro čtení ve vstupní vyrovnávací paměti. Pokud _Mode & ios_base::out
je nenulová, funkce změní další pozici pro zápis do výstupní vyrovnávací paměti. Aby byl datový proud ovlivněn, musí existovat jeho vyrovnávací paměť. Aby operace umístění byla úspěšná, musí výsledná pozice datového proudu být umístěná v řízené sekvenci. Pokud funkce ovlivňuje obě pozice datového proudu, musí být ios_base::beg
_Way nebo ios_base::end
oba datové proudy umístěny ve stejném prvku. Jinak (nebo pokud není ovlivněna žádná pozice), operace umístění selže.
Pokud se funkce úspěšně změní buď nebo obě pozice datového proudu, vrátí výslednou pozici datového proudu. V opačném případě selže a vrátí neplatnou pozici datového proudu.
basic_stringbuf::seekpos
Chráněná virtuální členová funkce se pokusí změnit aktuální pozice pro řízené datové proudy.
virtual pos_type seekpos(pos_type _Sp, ios_base::openmode _Mode = ios_base::in | ios_base::out);
Parametry
_Sp
Pozice, na které se má hledat.
_Režim
Určuje režim pozice ukazatele. Výchozí nastavení je umožnit úpravu pozic čtení a zápisu.
Návratová hodnota
Pokud se funkce úspěšně změní buď nebo obě pozice datového proudu, vrátí výslednou pozici datového proudu. V opačném případě selže a vrátí neplatnou pozici 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
Pro objekt třídy basic_stringbuf<Elem, Tr, Alloc
>, pozice toku se skládá čistě z posunu toku. Odsazení nuly označuje první prvek řízené sekvence. Nová pozice je určena _ Sp.
Pokud je režim &ios_base::in nenulový, funkce změní další pozici pro čtení ve vstupní vyrovnávací paměti. Pokud je režim &ios_base::out nenulový, funkce změní další pozici pro zápis do výstupní vyrovnávací paměti. Aby byl datový proud ovlivněn, musí existovat jeho vyrovnávací paměť. Aby operace umístění byla úspěšná, musí výsledná pozice datového proudu být umístěná v řízené sekvenci. Jinak (nebo pokud není ovlivněna žádná pozice), operace umístění selže.
basic_stringbuf::str
Nastaví nebo získá text do vyrovnávací paměti řetězce beze změny pozice zápisu.
basic_string<Elem, Tr, Alloc> str() const;
void str(
const basic_string<Elem, Tr, Alloc>& _Newstr);
Parametry
_Newstr
Nový řetězec.
Návratová hodnota
Vrátí objekt třídy basic_string<Elem, Tr, Alloc>, jehož řízená sekvence je kopií sekvence řízené .*this
Poznámky
První člen funkce vrátí objekt třídy basic_string<Elem, Tr, Alloc
>jehož řízená sekvence je kopie sekvence řízené *this
. Kopírovaná sekvence závisí na uloženém režimu stringbuf:
Pokud je režim &ios_base::out nenulový a výstupní vyrovnávací paměť existuje, sekvence je celá výstupní vyrovnávací paměť (prvky pbase epptr - začínající ).
pbase
Pokud režim & ios_base::in je nenulová a vstupní vyrovnávací paměť existuje, sekvence je celá vstupní vyrovnávací paměť (egptr - eback elementy
eback
začínající ).V opačném případě je zkopírovaná sekvence prázdná.
Druhá členová funkce uvolní jakoukoli sekvenci, která je aktuálně řízena *this
. Potom přidělí kopii sekvence řízené _Newstr. Pokud režim &ios_base::in je nenulový, nastaví vstupní vyrovnávací paměť tak, aby začala číst na začátku sekvence. Pokud je režim &ios_base::out nenulový, nastaví výstupní vyrovnávací paměť pro zahájení zápisu na začátku sekvence.
Příklad
// basic_stringbuf_str.cpp
// compile with: /EHsc
#include <iostream>
#include <sstream>
using namespace std;
int main( )
{
basic_string<char> i( "test" );
stringstream ss;
ss.rdbuf( )->str( i );
cout << ss.str( ) << endl;
ss << "z";
cout << ss.str( ) << endl;
ss.rdbuf( )->str( "be" );
cout << ss.str( ) << endl;
}
test
zest
be
basic_stringbuf::traits_type
Přidruží název typu k parametru šablony Tr .
typedef Tr traits_type;
Poznámky
Typ je synonymem parametru šablony Tr.
basic_stringbuf::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
Pokud funkce nemůže být úspěšná, vrátí traits_type::eof. V opačném případě vrátí aktuální prvek ve vstupním datovém proudu, který je převeden.
Poznámky
Chráněná virtuální členová funkce se pokusí extrahovat aktuální prvek byte
ze vstupní vyrovnávací paměti, přejít na aktuální pozici datového proudu a vrátit prvek jako traits_type::to_int_type( bajt). Může to udělat jedním způsobem: Pokud je k dispozici pozice čtení, přebírá byte
jako prvek uložený v pozici čtení a posune další ukazatel vstupní vyrovnávací paměti.
basic_streambuf::swap
Prohodí obsah této vyrovnávací paměti řetězce s jinou vyrovnávací pamětí řetězce.
void basic_stringbuf<T>::swap(basic_stringbuf& other)
Parametry
jiný
Basic_stringbuf, jehož obsah bude prohozen tímto basic_stringbuf.
Poznámky
basic_stringbuf::operator=
Přiřadí obsah basic_stringbuf na pravé straně operátoru basic_stringbuf na levé straně.
basic_stringbuf& basic_stringbuf:: operator=(const basic_stringbuf& other)
Parametry
jiný
Basic_stringbuf, jehož obsah, včetně vlastností národního prostředí, se přiřadí řetězci na levé straně operátoru.
Poznámky
Viz také
Bezpečný přístup z více vláken ve standardní knihovně C++
iostream – programování
iostreams – konvence