Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Beskriver en strömbuffert som styr överföringen av element av typen Elem, vars karaktärsdrag bestäms av klassen Tr, till och från en sekvens med element som lagras i ett matrisobjekt.
Syntax
template <class Elem, class Tr = char_traits<Elem>,
    class Alloc = allocator<Elem>>
class basic_stringbuf : public basic_streambuf<Elem, Tr>
Parameterar
              Alloc
Allokeringsklassen.
              Elem
Typen av det grundläggande elementet i strängen.
              Tr
Karaktärsdragen är specialiserade på det grundläggande elementet i strängen.
Anmärkningar
Objektet allokeras, utökas och frigörs efter behov för att hantera ändringar i sekvensen.
Ett objekt i klassen basic_stringbuf<Elem, Tr, Alloc> lagrar en kopia av ios_base::argumentet openmode från konstruktorn som lägeslägestringbuf:
Om
mode & ios_base::inär icke-zero är indatabufferten tillgänglig. Mer information finns i basic_streambuf-klass.Om
mode & ios_base::outär icke-zero är utdatabufferten tillgänglig.
Konstruktörer
| Konstruktor | Beskrivning | 
|---|---|
| basic_stringbuf | Konstruerar ett objekt av typen basic_stringbuf. | 
Typedefs
| Typnamn | Beskrivning | 
|---|---|
| allocator_type | Typen är synonym för mallparametern Alloc. | 
| char_type | Associerar ett typnamn med mallparametern Elem . | 
| int_type | Gör att den här typen inom basic_filebufomfånget motsvarar typen av samma namn i Tr-omfånget . | 
| off_type | Gör att den här typen inom basic_filebufomfånget motsvarar typen av samma namn i Tr-omfånget . | 
| pos_type | Gör att den här typen inom basic_filebufomfånget motsvarar typen av samma namn i Tr-omfånget . | 
| traits_type | Associerar ett typnamn med Tr-mallparametern. | 
Medlemsfunktioner
| Medlemsfunktion | Beskrivning | 
|---|---|
| svämma över | En skyddad virtuell funktion som kan anropas när ett nytt tecken infogas i en fullständig buffert. | 
| pbackfail | Den skyddade virtuella medlemsfunktionen försöker placera tillbaka ett element i indatabufferten och gör det sedan till det aktuella elementet (pekat på vid nästa pekare). | 
| seekoff | Den skyddade virtuella medlemsfunktionen försöker ändra de aktuella positionerna för de kontrollerade strömmarna. | 
| seekpos | Den skyddade virtuella medlemsfunktionen försöker ändra de aktuella positionerna för de kontrollerade strömmarna. | 
| Str | Anger eller hämtar texten i en strängbuffert utan att ändra skrivpositionen. | 
| byta | |
| Underflödet | Den skyddade virtuella medlemsfunktionen för att extrahera det aktuella elementet från indataströmmen. | 
Kravspecifikation
Rubrik:<sstream>
namnområde: std
basic_stringbuf::allocator_type
Typen är synonym för mallparametern Alloc.
typedef Alloc allocator_type;
basic_stringbuf::basic_stringbuf
Konstruerar ett objekt av typen 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);
Parameterar
              _Läge
En av uppräkningarna i ios_base::openmode.
              Str
Ett objekt av typen basic_string.
Anmärkningar
Den första konstruktorn lagrar en nullpekare i alla pekare som styr indatabufferten och utdatabufferten. Mer information finns i avsnittet Anmärkningar i klassen basic_streambuf. Den lagrar också _Mode som stringbuf-läge. Mer information finns i avsnittet Anmärkningar i klassen basic_stringbuf.
Den andra konstruktorn allokerar en kopia av sekvensen som styrs av strängobjektet str. Om _Mode & ios_base::in är icke-noll ställer den in indatabufferten så att den börjar läsa i början av sekvensen. Om _Mode & ios_base::out är icke-noll ställer den in utdatabufferten så att den börjar skriva i början av sekvensen. Den lagrar också _Mode som stringbuf-läge. Mer information finns i avsnittet Anmärkningar i klassen basic_stringbuf.
basic_stringbuf::char_type
Associerar ett typnamn med mallparametern Elem .
typedef Elem char_type;
basic_stringbuf::int_type
Gör att den här typen inom basic_filebuf omfång motsvarar typen av samma namn i omfånget Tr .
typedef typename traits_type::int_type int_type;
basic_stringbuf::off_type
Gör att den här typen inom basic_filebuf omfång motsvarar typen av samma namn i omfånget Tr .
typedef typename traits_type::off_type off_type;
basic_stringbuf::overflow
En skyddad virtuell funktion som kan anropas när ett nytt tecken infogas i en fullständig buffert.
virtual int_type overflow(int_type _Meta = traits_type::eof());
Parameterar
              _Meta
Tecknet som ska infogas i bufferten, eller traits_type::eof.
Returvärde
Om funktionen inte kan lyckas returneras traits_type::eof. Annars returneras traits_type::not_eof(_ Meta).
Anmärkningar
Om _Meta inte jämförs med traits_type::eof försöker den skyddade virtuella medlemsfunktionen infoga elementet traits_type::to_char_type(_Meta) i utdatabufferten. Det kan göra det på olika sätt:
Om en skrivposition är tillgänglig kan den lagra elementet i skrivpositionen och öka nästa pekare för utdatabufferten.
Det kan göra en skrivposition tillgänglig genom att allokera ny eller ytterligare lagring för utdatabufferten. Om du utökar utdatabufferten på det här sättet utökas även alla associerade indatabuffertar.
basic_stringbuf::p backfail
Den skyddade virtuella medlemsfunktionen försöker placera tillbaka ett element i indatabufferten och sedan göra det till det aktuella elementet (pekat på nästa pekare).
virtual int_type pbackfail(int_type _Meta = traits_type::eof());
Parameterar
              _Meta
Tecknet som ska infogas i bufferten, eller traits_type::eof.
Returvärde
Om funktionen inte kan lyckas returneras traits_type::eof. Annars returneras traits_type::not_eof(_ Meta).
Anmärkningar
Om _Meta jämförs med traits_type::eof är elementet som ska push-överföras effektivt det som redan finns i strömmen före det aktuella elementet. Annars ersätts elementet med byte = traits_type::to_char_type(_ Meta). Funktionen kan återställa ett element på olika sätt:
Om en putback-position är tillgänglig och elementet som lagras där jämförs med byte, kan det minska nästa pekare för indatabufferten.
Om en putback-position är tillgänglig, och om stringbuf-läget tillåter att sekvensen ändras ( läge &ios_base::out är ickezero), kan den lagra byte i återställningspositionen och minska nästa pekare för indatabufferten.
basic_stringbuf::p os_type
Gör att den här typen inom basic_filebuf omfång motsvarar typen av samma namn i omfånget Tr .
typedef typename traits_type::pos_type pos_type;
basic_stringbuf::seekoff
Den skyddade virtuella medlemsfunktionen försöker ändra de aktuella positionerna för de kontrollerade strömmarna.
virtual pos_type seekoff(
    off_type _Off,
    ios_base::seekdir _Way,
    ios_base::openmode _Mode = ios_base::in | ios_base::out);
Parameterar
              _Bort
Positionen att söka efter i förhållande till _Way. Mer information finns i basic_stringbuf::off_type.
              _Väg
Startpunkten för förskjutningsåtgärder. Se ios_base::seekdir för möjliga värden.
              _Läge
Anger läget för pekarpositionen. Standardinställningen är att du kan ändra läs- och skrivpositionerna. Mer information finns i ios_base::openmode.
Returvärde
Returnerar den nya positionen eller en ogiltig strömposition.
Anmärkningar
För ett objekt av klassen basic_stringbuf<Elem, Tr, Alloc>består en strömposition enbart av en strömförskjutning. Förskjutning noll anger det första elementet i den kontrollerade sekvensen.
Den nya positionen bestäms på följande sätt:
Om
_Way==ios_base::begär den nya positionen början på strömmen plus _Off.Om
_Way==ios_base::curär den nya positionen den aktuella strömpositionen plus _Off.Om
_Way==ios_base::endär den nya positionen slutet på strömmen plus _Off.
Om _Mode & ios_base::in är nonzero ändrar funktionen nästa position för att läsa i indatabufferten. Om _Mode & ios_base::out är nonzero ändrar funktionen nästa position för att skriva i utdatabufferten. För att en dataström ska påverkas måste dess buffert finnas. För att en positioneringsåtgärd ska lyckas måste den resulterande strömpositionen ligga inom den kontrollerade sekvensen. Om funktionen påverkar båda strömpositionerna måste _Way vara ios_base::beg eller ios_base::end och båda strömmarna placeras på samma element. Annars (eller om ingen av positionerna påverkas) misslyckas positioneringsåtgärden.
Om funktionen lyckas ändra någon av eller båda strömpositionerna returnerar den resulterande strömpositionen. Annars misslyckas den och returnerar en ogiltig strömposition.
basic_stringbuf::seekpos
Den skyddade virtuella medlemsfunktionen försöker ändra de aktuella positionerna för de kontrollerade strömmarna.
virtual pos_type seekpos(pos_type _Sp, ios_base::openmode _Mode = ios_base::in | ios_base::out);
Parameterar
              _Sp
Positionen att söka efter.
              _Läge
Anger läget för pekarpositionen. Standardinställningen är att du kan ändra läs- och skrivpositionerna.
Returvärde
Om funktionen lyckas ändra någon av eller båda strömpositionerna returnerar den resulterande strömpositionen. Annars misslyckas den och returnerar en ogiltig strömposition. Om du vill avgöra om strömpositionen är ogiltig jämför du returvärdet med pos_type(off_type(-1)).
Anmärkningar
För ett objekt av klass basic_stringbuf<Elem, Tr, Alloc>består en strömposition enbart av en strömförskjutning. Förskjutning noll anger det första elementet i den kontrollerade sekvensen. Den nya positionen bestäms av _ Sp.
Om läget &ios_base::in inte är noll ändrar funktionen nästa position för att läsa i indatabufferten. Om läget &ios_base::out inte är noll ändrar funktionen nästa position för att skriva i utdatabufferten. För att en dataström ska påverkas måste dess buffert finnas. För att en positioneringsåtgärd ska lyckas måste den resulterande strömpositionen ligga inom den kontrollerade sekvensen. Annars (eller om ingen av positionerna påverkas) misslyckas positioneringsåtgärden.
basic_stringbuf::str
Anger eller hämtar texten i en strängbuffert utan att ändra skrivpositionen.
basic_string<Elem, Tr, Alloc> str() const;
void str(
    const basic_string<Elem, Tr, Alloc>& _Newstr);
Parameterar
              _Newstr
Den nya strängen.
Returvärde
Returnerar ett objekt av klassen basic_string<Elem, Tr, Alloc >, vars kontrollerade sekvens är en kopia av sekvensen som styrs av *this.
Anmärkningar
Den första medlemsfunktionen returnerar ett objekt av klassen basic_string<Elem, Tr, Alloc>, vars kontrollerade sekvens är en kopia av sekvensen som styrs av *this. Sekvensen som kopieras beror på det lagrade stringbuf-läget:
Om läget &ios_base::out inte är noll och det finns en utdatabuffert är sekvensen hela utdatabufferten ( epptr - pbase-element som börjar med
pbase).Om läget &ios_base::in inte är noll och det finns en indatabuffert är sekvensen hela indatabufferten ( egptr-eback-element - som börjar med ).
ebackAnnars är den kopierade sekvensen tom.
Den andra medlemsfunktionen frigör alla sekvenser som för närvarande styrs av *this. Den allokerar sedan en kopia av sekvensen som styrs av _Newstr. Om läget &ios_base::in inte är noll ställer det in indatabufferten för att börja läsa i början av sekvensen. Om läget &ios_base::out inte är noll ställer det in utdatabufferten för att börja skriva i början av sekvensen.
Exempel
// 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
Associerar ett typnamn med Tr-mallparametern.
typedef Tr traits_type;
Anmärkningar
Typen är synonym för mallparametern Tr.
basic_stringbuf::underflöde
Skyddad virtuell funktion för att extrahera det aktuella elementet från indataströmmen.
virtual int_type underflow();
Returvärde
Om funktionen inte kan lyckas returneras traits_type::eof. Annars returneras det aktuella elementet i indataströmmen, som konverteras.
Anmärkningar
Den skyddade virtuella medlemsfunktionen försöker extrahera det aktuella elementet byte från indatabufferten, föra fram den aktuella strömpositionen och returnera elementet som traits_type::to_int_type( byte). Det kan göra det på ett sätt: Om en läsposition är tillgänglig tar byte den som elementet som lagras i läspositionen och flyttar fram nästa pekare för indatabufferten.
basic_streambuf::swap
Växlar innehållet i strängbufferten med en annan strängbuffert.
void basic_stringbuf<T>::swap(basic_stringbuf& other)
Parameterar
              andra
Den basic_stringbuf vars innehåll kommer att växlas med den här basic_stringbuf.
basic_stringbuf::operator=
Tilldelar innehållet i basic_stringbuf på höger sida av operatorn till basic_stringbuf till vänster.
basic_stringbuf& basic_stringbuf:: operator=(const basic_stringbuf& other)
Parameterar
              andra
En basic_stringbuf vars innehåll, inklusive nationella egenskaper, kommer att tilldelas till stringbuf på vänster sida av operatorn.
Se även
              Trådsäkerhet i C++ Standard Library
              iostream-programmering
              iostreams-konventioner