Sdílet prostřednictvím


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, Truloží> Allockopii 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_filebufrozsahu 's ekvivalentem typu stejného názvu v oboru Tr .
off_type Tento typ v basic_filebufrozsahu 's ekvivalentem typu stejného názvu v oboru Tr .
pos_type Tento typ v basic_filebufrozsahu '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::curje 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 ebackzačí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