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 abstrakt basklass för att härleda en strömbuffert, som styr överföringen av element till och från en specifik representation av en ström.
Syntax
template <class Elem, class Tr = char_traits<Elem>>
class basic_streambuf;
Parameterar
Elem
En char_type.
Tr
Tecknet traits_type.
Anmärkningar
Klassmallen beskriver en abstrakt basklass för att härleda en strömbuffert, som styr överföringen av element till och från en specifik representation av en dataström. Ett objekt i klassen basic_streambuf hjälper till att styra en ström med element av typen Tr, även kallat char_type, vars karaktärsdrag bestäms av klassen char_traits, även kallat traits_type.
Varje strömbuffert styr konceptuellt två oberoende strömmar: en för extrahering (indata) och en för infogningar (utdata). En specifik representation kan dock göra endera eller båda dessa strömmar otillgängliga. Den upprätthåller vanligtvis en viss relation mellan de två strömmarna. Det du infogar i utdataströmmen för en basic_stringbuf<Elem, Tr> objekt, till exempel, är vad du senare extraherar från dess indataström. När du placerar en ström av en basic_filebuf<Elem objekt Tr> placerar du den andra strömmen tillsammans.
Det offentliga gränssnittet till klassmallen basic_streambuf tillhandahåller de åtgärder som är gemensamma för alla dataströmbuffertar, men specialiserade. Det skyddade gränssnittet tillhandahåller de åtgärder som krävs för en specifik representation av en dataström för att utföra sitt arbete. Med de skyddade funktionerna för virtuella medlemmar kan du skräddarsy beteendet för en härledd dataströmbuffert för en specifik representation av en dataström. Varje härledd dataströmbuffert i det här biblioteket beskriver hur den specialiserar sig på beteendet för sina skyddade virtuella medlemsfunktioner. Standardbeteendet för basklassen, som ofta inte gör någonting, beskrivs i den här artikeln.
De återstående skyddade medlemsfunktionerna styr kopiering till och från lagring som tillhandahålls till buffertöverföringar till och från strömmar. En indatabuffert kännetecknas till exempel av:
eback, en pekare till början av bufferten.
gptr, en pekare till nästa element att läsa.
egptr, en pekare förbi slutet av bufferten.
På samma sätt kännetecknas en utdatabuffert av:
pbase, en pekare till början av bufferten.
pptr, en pekare till nästa element att skriva.
epptr, en pekare förbi slutet av bufferten.
För alla buffertar används följande protokoll:
Om nästa pekare är null finns det ingen buffert. Annars pekar alla tre pekare i samma sekvens. De kan jämföras på ett säkert sätt för beställning.
Om nästa pekare jämför mindre än slutpekaren för en utdatabuffert kan du lagra ett element på den skrivposition som anges av nästa pekare.
Om nästa pekare jämför mindre än slutpekaren för en indatabuffert kan du läsa ett element vid den läsposition som anges av nästa pekare.
För en indatabuffert kan du, om startpekaren jämför mindre än nästa pekare, lägga tillbaka ett element vid den putback-position som anges av den decrementerade nästa pekaren.
Alla skyddade virtuella medlemsfunktioner som du skriver för en klass som härletts från basic_streambuf<ElemTr> måste samarbeta för att upprätthålla det här protokollet.
Ett objekt i klassen basic_streambuf<Elem, Tr> lagrar de sex pekare som beskrivits tidigare. Det lagrar också ett nationella objekt i ett objekt av typen språkvariant för potentiell användning av en härledd dataströmbuffert.
Konstruktörer
| Konstruktor | Beskrivning |
|---|---|
| basic_streambuf | Konstruerar ett objekt av typen basic_streambuf. |
Typedefs
| Typnamn | Beskrivning |
|---|---|
| char_type | Associerar ett typnamn med mallparametern Elem . |
| int_type | Associerar ett typnamn inom basic_streambuf omfånget med mallparametern Elem . |
| off_type | Associerar ett typnamn inom basic_streambuf omfånget med mallparametern Elem . |
| pos_type | Associerar ett typnamn inom basic_streambuf omfånget med mallparametern Elem . |
| traits_type | Associerar ett typnamn med mallparametern Tr . |
Medlemsfunktioner
| Medlemsfunktion | Beskrivning |
|---|---|
| eback | En skyddad funktion som returnerar en pekare till början av indatabufferten. |
| egptr | En skyddad funktion som returnerar en pekare förbi slutet av indatabufferten. |
| epptr | En skyddad funktion som returnerar en pekare förbi slutet av utdatabufferten. |
| gbump | En skyddad funktion som lägger count till nästa pekare för indatabufferten. |
| getloc | Hämtar objektets basic_streambuf nationella inställningar. |
| gptr | En skyddad funktion som returnerar en pekare till nästa element i indatabufferten. |
| genomsyra | En skyddad virtuell funktion som anropas av pubimbue. |
| in_avail | Returnerar antalet element som är redo att läsas från bufferten. |
| svämma över | En skyddad virtuell funktion som kan anropas när ett nytt tecken infogas i en fullständig buffert. |
| pbackfail | En skyddad virtuell medlemsfunktion som försöker placera tillbaka ett element i indataströmmen och sedan göra det till det aktuella elementet (pekat på nästa pekare). |
| pbase | En skyddad funktion som returnerar en pekare till början av utdatabufferten. |
| pbump | En skyddad funktion som lägger count till nästa pekare för utdatabufferten. |
| pptr | En skyddad funktion som returnerar en pekare till nästa element i utdatabufferten. |
| pubimbue | Anger objektets basic_streambuf nationella inställningar. |
| pubseekoff | Anropar seekoff, en skyddad virtuell funktion som åsidosätts i en härledd klass. |
| pubseekpos | Anropar seekpos, en skyddad virtuell funktion som åsidosätts i en härledd klass och återställer den aktuella pekarpositionen. |
| pubsetbuf | Anropar setbuf, en skyddad virtuell funktion som åsidosätts i en härledd klass. |
| pubsync | Anropar synkronisering, en skyddad virtuell funktion som åsidosätts i en härledd klass och uppdaterar den externa dataström som är associerad med den här bufferten. |
| sbumpc | Läser och returnerar det aktuella elementet och flyttar strömpekaren. |
| 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. |
| setbuf | Den skyddade virtuella medlemsfunktionen utför en åtgärd som är specifik för varje härledd dataströmbuffert. |
| setg | En skyddad funktion som lagrar _Gbeg i startpekaren, _Gnext i nästa pekare och _Gend i slutpekaren för indatabufferten. |
| setp | En skyddad funktion som lagrar _Pbeg i startpekaren och _Pend i slutpekaren för utdatabufferten. |
| sgetc | Returnerar aktuellt element utan att ändra position i strömmen. |
| sgetn | Returnerar antalet lästa element. |
| showmanyc | Skyddad virtuell medlemsfunktion som returnerar antalet tecken som kan extraheras från indataströmmen. Det säkerställer också att programmet inte får vänta på obestämd tid. |
| snextc | Läser det aktuella elementet och returnerar följande element. |
| sputbackc | Placerar en char_type i strömmen. |
| sputc | Placerar ett tecken i strömmen. |
| sputn | Placerar en teckensträng i strömmen. |
| stossc | Gå förbi det aktuella elementet i strömmen. |
| sungetc | Hämtar ett tecken från strömmen. |
| växla | Byter ut värdena i det här objektet mot värdena i den angivna basic_streambuf objektparametern. |
| synkronisering | En skyddad virtuell funktion som försöker synkronisera de kontrollerade strömmarna med eventuella associerade externa strömmar. |
| uflow | En skyddad virtuell funktion som extraherar det aktuella elementet från indataströmmen. |
| Underflödet | En skyddad virtuell funktion som extraherar det aktuella elementet från indataströmmen. |
| xsgetn | En skyddad virtuell funktion som extraherar element från indataströmmen. |
| xsputn | En skyddad virtuell funktion som infogar element i utdataströmmen. |
Operatörer
| Operatör | Beskrivning |
|---|---|
| operator= | Tilldelar värdena för det här objektet från ett annat basic_streambuf objekt. |
Kravspecifikation
Rubrik:<streambuf>
namnområde: std
basic_streambuf::basic_streambuf
Konstruerar ett objekt av typen basic_streambuf.
basic_streambuf();
basic_streambuf(const basic_streambuf& right);
Parameterar
rätt
En lvalue-referens till objektet basic_streambuf som används för att ange värdena för det här basic_streambuf objektet.
Anmärkningar
Den första skyddade konstruktorn lagrar en nullpekare i alla pekare som styr indatabufferten och utdatabufferten. Den lagrar locale::classic även i nationella objekt. Mer information finns i språkvariant::classic.
Den andra skyddade konstruktorn kopierar pekarna och nationella inställningar från höger.
basic_streambuf::char_type
Associerar ett typnamn med mallparametern Elem .
typedef Elem char_type;
basic_streambuf::eback
En skyddad funktion som returnerar en pekare till början av indatabufferten.
char_type *eback() const;
Returvärde
En pekare till början av indatabufferten.
basic_streambuf::egptr
En skyddad funktion som returnerar en pekare förbi slutet av indatabufferten.
char_type *egptr() const;
Returvärde
En pekare förbi slutet av indatabufferten.
basic_streambuf::epptr
En skyddad funktion som returnerar en pekare förbi slutet av utdatabufferten.
char_type *epptr() const;
Returvärde
En pekare förbi slutet av utdatabufferten.
basic_streambuf::gbump
En skyddad funktion som lägger till antal till nästa pekare för indatabufferten.
void gbump(int count);
Parameterar
antal
Hur mycket pekaren ska föras framåt.
basic_streambuf::getloc
Hämtar basic_streambuf-objektets nationella inställningar.
locale getloc() const;
Returvärde
Det lagrade nationella objektet.
Anmärkningar
Relaterad information finns i ios_base::getloc.
Exempel
// 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
En skyddad funktion som returnerar en pekare till nästa element i indatabufferten.
char_type *gptr() const;
Returvärde
En pekare till nästa element i indatabufferten.
basic_streambuf::imbue
En skyddad virtuell funktion som anropas av pubimbue.
virtual void imbue(const locale& _Loc);
Parameterar
_Loc
En referens till ett språk.
Anmärkningar
Standardbeteendet är att inte göra någonting.
basic_streambuf::in_avail
Returnerar antalet element som är redo att läsas från bufferten.
streamsize in_avail();
Returvärde
Antalet element som är redo att läsas från bufferten.
Anmärkningar
Om en läsposition är tillgänglig returnerar medlemsfunktionen egptr - gptr. Annars returneras showmanyc.
Exempel
// 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
Associerar ett typnamn inom basic_streambuf omfång med en av typerna i en mallparameter.
typedef typename traits_type::int_type int_type;
basic_streambuf::off_type
Associerar ett typnamn inom basic_streambuf omfång med en av typerna i en mallparameter.
typedef typename traits_type::off_type off_type;
basic_streambuf::operator=
Tilldelar värdena för det här objektet från ett annat basic_streambuf objekt.
basic_streambuf& operator=(const basic_streambuf& right);
Parameterar
rätt
En lvalue-referens till objektet basic_streambuf som används för att tilldela värden till det här objektet.
Anmärkningar
Den skyddade medlemsoperatorn kopierar från höger pekarna som styr indatabufferten och utdatabufferten. Den lagrar right. även getloc() i locale object. Den returnerar *this.
basic_streambuf::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 returnerar den traits_type::eof eller genererar ett undantag. Annars returneras traits_type::not_eof(_ Meta). Standardbeteendet är att returnera traits_type::eof.
Anmärkningar
Om _Meta inte jämförs med traits_type::eof försöker funktionen för den skyddade virtuella medlemmen infoga elementet traits_type::to_char_type(_Meta) i utdataströmmen. Det kan göra det på olika sätt:
Om en
write positionä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.
Det kan göra en skrivposition tillgänglig genom att skriva ut, till något externt mål, vissa eller alla element mellan början och nästa pekare för utdatabufferten.
Funktionen för virtuellt spill, tillsammans med funktionerna för synkronisering och underflöde , definierar egenskaperna för klassen streambuf-derived. Varje härledd klass kan implementera spill på olika sätt, men gränssnittet med den anropande strömklassen är detsamma.
Funktionen overflow anropas oftast av offentliga streambuf funktioner som och sputc när put-området är fullt, men andra klasser, inklusive strömklasserna, kan anropa sputn när som overflow helst.
Funktionen använder tecknen i put-området mellan pekarna pbase och pptr och initierar sedan om put-området. Funktionen overflow måste också förbruka nCh (om nCh inte ), EOFeller så kan den välja att placera tecknet i det nya put-området så att det används vid nästa anrop.
Definitionen av användning varierar mellan härledda klasser. Klassen skriver till exempel filebuf sina tecken till en fil, medan strstreambuf klassen håller dem i sin buffert och (om bufferten är avsedd som dynamisk) expanderar bufferten som svar på ett anrop till spill. Denna expansion uppnås genom att frigöra den gamla bufferten och ersätta den med en ny, större. Pekarna justeras efter behov.
basic_streambuf::p backfail
En skyddad virtuell medlemsfunktion som försöker placera tillbaka ett element i indataströmmen 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 returnerar den traits_type::eof eller genererar ett undantag. Annars returneras något annat värde. Standardbeteendet är att returnera traits_type::eof.
Anmärkningar
Om _Meta jämförs med traits_type::eof är elementet som ska push-överföras i praktiken det som redan finns i strömmen före det aktuella elementet. Annars ersätts elementet med traits_type::to_char_type(_Meta). Funktionen kan återställa ett element på olika sätt:
Om en putback-position är tillgänglig kan den lagra elementet i återställningspositionen och minska nästa pekare för indatabufferten.
Det kan göra en återställningsposition tillgänglig genom att allokera ny eller ytterligare lagring för indatabufferten.
För en strömbuffert med vanliga indata- och utdataströmmar kan den göra en återställningsposition tillgänglig genom att skriva ut, till något externt mål, vissa eller alla element mellan början och nästa pekare för utdatabufferten.
basic_streambuf::p base
En skyddad funktion som returnerar en pekare till början av utdatabufferten.
char_type *pbase() const;
Returvärde
En pekare till början av utdatabufferten.
basic_streambuf::p bump
En skyddad funktion som lägger till antal till nästa pekare för utdatabufferten.
void pbump(int count);
Parameterar
antal
Antalet tecken som skrivpositionen ska flyttas framåt med.
basic_streambuf::p os_type
Associerar ett typnamn inom basic_streambuf omfång med en av typerna i en mallparameter.
typedef typename traits_type::pos_type pos_type;
basic_streambuf::p ptr
En skyddad funktion som returnerar en pekare till nästa element i utdatabufferten.
char_type *pptr() const;
Returvärde
En pekare till nästa element i utdatabufferten.
basic_streambuf::p ubimbue
Anger basic_streambuf-objektets nationella inställningar.
locale pubimbue(const locale& _Loc);
Parameterar
_Loc
En referens till ett språk.
Returvärde
Det tidigare värdet som lagras i språkvariantobjektet.
Anmärkningar
Medlemsfunktionen lagrar _ Loc i språkobjektet och anropar imbue.
Exempel
Se basic_ios::imbue för ett exempel som använder pubimbue.
basic_streambuf::p ubseekoff
Anropar seekoff, en skyddad virtuell funktion som åsidosätts i en härledd klass.
pos_type pubseekoff(off_type _Off,
ios_base::seekdir _Way,
ios_base::openmode _Which = ios_base::in | ios_base::out);
Parameterar
_Bort
Positionen att söka efter i förhållande till _Way.
_Väg
Startpunkten för förskjutningsåtgärder. Se seekdir för möjliga värden.
_Vilken
Anger läget för pekarpositionen. Standardinställningen är att du kan ändra läs- och skrivpositionerna.
Returvärde
Returnerar den nya positionen eller en ogiltig strömposition (seekoff(_ Av, _Way, _Which)).
Anmärkningar
Flyttar pekaren i förhållande till _Way.
basic_streambuf::p ubseekpos
Anropar seekpos, en skyddad virtuell funktion som åsidosätts i en härledd klass, och återställer den aktuella pekarpositionen.
pos_type pubseekpos(pos_type _Sp, ios_base::openmode _Which = ios_base::in | ios_base::out);
Parameterar
_Sp
Positionen att söka efter.
_Vilken
Anger läget för pekarpositionen. Standardinställningen är att du kan ändra läs- och skrivpositionerna.
Returvärde
Den nya positionen eller 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
Medlemsfunktionen returnerar seekpos(_ Sp, _Which).
basic_streambuf::p ubsetbuf
Anropar setbuf, en skyddad virtuell funktion som åsidosätts i en härledd klass.
basic_streambuf<Elem, Tr> *pubsetbuf(
char_type* _Buffer,
streamsize count);
Parameterar
_Buffert
En pekare till char_type för den här instansieringen.
antal
Buffertens storlek.
Returvärde
Returnerar setbuf(_Buffer, count).
basic_streambuf::p ubsync
Anropar synkronisering, en skyddad virtuell funktion som åsidosätts i en härledd klass och uppdaterar den externa dataström som är associerad med den här bufferten.
int pubsync();
Returvärde
Returnerar synkronisering eller -1 vid fel.
basic_streambuf::sbumpc
Läser och returnerar det aktuella elementet och flyttar strömpekaren.
int_type sbumpc();
Returvärde
Det aktuella elementet.
Anmärkningar
Om en läsposition är tillgänglig returnerar medlemsfunktionen traits_type::to_int_type(*gptr) och ökar nästa pekare för indatabufferten. Annars returneras uflow.
Exempel
// 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
En skyddad virtuell medlemsfunktion som 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 _Which = ios_base::in | ios_base::out);
Parameterar
_Bort
Positionen att söka efter i förhållande till _Way.
_Väg
Startpunkten för förskjutningsåtgärder. Se seekdir för möjliga värden.
_Vilken
Anger läget för pekarpositionen. Standardinställningen är att du kan ändra läs- och skrivpositionerna.
Returvärde
Returnerar den nya positionen eller en ogiltig strömposition (seekoff (_ Av, _Way, _Which)).
Anmärkningar
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 _ Av.Om
_Way==ios_base::curär den nya positionen den aktuella strömpositionen plus _ Av.Om
_Way==ios_base::endär den nya positionen slutet på strömmen plus _ Av.
Om vilken &ios_base::in inte är noll påverkas indataströmmen, och om vilken &ios_base::out inte är noll påverkas utdataströmmen. Den faktiska användningen av den här parametern varierar dock mellan härledda dataströmbuffertar.
Om funktionen lyckas ändra strömpositionen eller positionerna returnerar den resulterande strömpositionen eller någon av de resulterande strömpositionerna. Annars returneras en ogiltig strömposition. Standardbeteendet är att returnera en ogiltig strömposition.
basic_streambuf::seekpos
En skyddad virtuell medlemsfunktion som försöker ändra de aktuella positionerna för de kontrollerade strömmarna.
virtual pos_type seekpos(pos_type _Sp, ios_base::openmode _Which = ios_base::in | ios_base::out);
Parameterar
_Sp
Positionen att söka efter.
_Vilken
Anger läget för pekarpositionen. Standardinställningen är att du kan ändra läs- och skrivpositionerna.
Returvärde
Den nya positionen eller 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
Den nya positionen är _ Sp.
Om vilken &ios_base::in inte är noll påverkas indataströmmen, och om vilken &ios_base::out inte är noll påverkas utdataströmmen. Den faktiska användningen av den här parametern varierar dock mellan härledda dataströmbuffertar.
Om funktionen lyckas ändra strömpositionen eller positionerna returnerar den resulterande strömpositionen eller någon av de resulterande strömpositionerna. Annars returneras en ogiltig strömposition (-1). Standardbeteendet är att returnera en ogiltig strömposition.
basic_streambuf::setbuf
En skyddad virtuell medlemsfunktion som utför en åtgärd som är specifik för varje härledd dataströmbuffert.
virtual basic_streambuf<Elem, Tr> *setbuf(
char_type* _Buffer,
streamsize count);
Parameterar
_Buffert
Pekare till en buffert.
antal
Buffertens storlek.
Returvärde
Standardbeteendet är att returnera this.
Anmärkningar
Se basic_filebuf.
setbuf innehåller ett minnesområde som streambuf objektet ska använda. Hur bufferten används i definierade i de härledda klasserna.
basic_streambuf::setg
En skyddad funktion som lagrar _ Gbeg i startpekaren, _Gnext i nästa pekare och _Gend i slutpekaren för indatabufferten.
void setg(char_type* _Gbeg,
char_type* _Gnext,
char_type* _Gend);
Parameterar
_Gbeg
En pekare till början av bufferten.
_Gnext
En pekare till någonstans mitt i bufferten.
_Gend
En pekare till slutet av bufferten.
basic_streambuf::setp
En skyddad funktion som lagrar _Pbeg i startpekaren och _Pend i slutpekaren för utdatabufferten.
void setp(char_type* _Pbeg, char_type* _Pend);
Parameterar
_Pbeg
En pekare till början av bufferten.
_Pend
En pekare till slutet av bufferten.
basic_streambuf::sgetc
Returnerar aktuellt element utan att ändra position i strömmen.
int_type sgetc();
Returvärde
Det aktuella elementet.
Anmärkningar
Om en läsposition är tillgänglig returnerar medlemsfunktionen traits_type::to_int_type(*gptr). Annars returneras underflöde.
Exempel
// 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
Extraherar upp till antal tecken från indatabufferten och lagrar dem i den angivna bufferten ptr.
Den här metoden är potentiellt osäker eftersom den förlitar sig på anroparen för att kontrollera att de anförda värdena är korrekta.
streamsize sgetn(
char_type* ptr,
streamsize count);
Parameterar
ptr
Bufferten som ska innehålla de extraherade tecknen.
antal
Antalet element som ska läsas.
Returvärde
Antalet lästa element. Mer information finns i streamsize för mer information.
Anmärkningar
Medlemsfunktionen returnerar xsgetn(ptr, count).
Exempel
// 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
En skyddad virtuell medlemsfunktion som returnerar antalet tecken som kan extraheras från indataströmmen och se till att programmet inte får vänta på obestämd tid.
virtual streamsize showmanyc();
Returvärde
Standardbeteendet är att returnera noll.
basic_streambuf::snextc
Läser det aktuella elementet och returnerar följande element.
int_type snextc();
Returvärde
Nästa element i strömmen.
Anmärkningar
Medlemsfunktionen anropar sbumpc och returnerar traits_type::eof om funktionen returnerar traits_type::eof. Annars returneras sgetc.
Exempel
// 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
Placerar en char_type i strömmen.
int_type sputbackc(char_type _Ch);
Parameterar
_Ch
Tecknet.
Returvärde
Returnerar tecknet eller felet.
Anmärkningar
Om en putback-position är tillgänglig och _Ch jämförs med tecknet som lagras i den positionen, minskar medlemsfunktionen nästa pekare för indatabufferten och returnerar traits_type::to_int_type(_Ch). Annars returneras pbackfail(_Ch).
Exempel
// 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
Placerar ett tecken i strömmen.
int_type sputc(char_type _Ch);
Parameterar
_Ch
Tecknet.
Returvärde
Returnerar tecknet om det lyckas.
Anmärkningar
Om en write position är tillgänglig lagrar medlemsfunktionen _Ch i skrivpositionen, ökar nästa pekare för utdatabufferten och returnerar traits_type::to_int_type(_Ch). Annars returneras spill(_Ch).
Exempel
// 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
Placerar en teckensträng i strömmen.
streamsize sputn(const char_type* ptr, streamsize count);
Parameterar
ptr
Teckensträngen.
antal
Antalet tecken.
Returvärde
Antalet tecken som infogats i strömmen.
Anmärkningar
Medlemsfunktionen returnerar xsputn(ptr, count). Mer information finns i avsnittet Kommentarer i den här medlemmen för mer information.
Exempel
// 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
Gå förbi det aktuella elementet i strömmen.
void stossc();
Anmärkningar
Medlemsfunktionen anropar sbumpc. En implementering krävs inte för att tillhandahålla den här medlemsfunktionen.
Exempel
// 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
Hämtar ett tecken från strömmen.
int_type sungetc();
Returvärde
Returnerar antingen tecknet eller felet.
Anmärkningar
Om en putback-position är tillgänglig minskar medlemsfunktionen nästa pekare för indatabufferten och returnerar traits_type::to_int_type(*gptr). Det går dock inte alltid att fastställa det sista tecknet som lästes så att det kan avbildas i tillståndet för den aktuella bufferten. Om detta är sant returnerar funktionen pbackfail. Undvik den här situationen genom att hålla reda på tecknet som ska läggas tillbaka och anropa sputbackc(ch), vilket inte misslyckas förutsatt att du inte anropar det i början av strömmen och du inte försöker lägga tillbaka mer än ett tecken.
Exempel
// 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
Byter värden i det här objektet mot värdena i det angivna basic_streambuf objektet.
void swap(basic_streambuf& right);
Parameterar
rätt
En lvalue-referens till objektet basic_streambuf som används för att utbyta värden.
Anmärkningar
Funktionen protected member utbyter med rätt alla pekare som input buffer styr och output buffer. Det utbyter right. även getloc() med objektetlocale.
basic_streambuf::sync
En skyddad virtuell funktion som försöker synkronisera de kontrollerade strömmarna med eventuella associerade externa strömmar.
virtual int sync();
Returvärde
Om funktionen inte kan lyckas returneras -1. Standardbeteendet är att returnera noll.
Anmärkningar
sync innebär att skriva ut alla element mellan början och nästa pekare för utdatabufferten. Det innebär inte att lägga tillbaka några element mellan nästa och slutpekare för indatabufferten.
basic_streambuf::traits_type
Associerar ett typnamn med Tr-mallparametern.
typedef Tr traits_type;
basic_streambuf::uflow
En skyddad virtuell funktion som extraherar det aktuella elementet från indataströmmen.
virtual int_type uflow();
Returvärde
Det aktuella elementet.
Anmärkningar
Den skyddade virtuella medlemsfunktionen försöker extrahera det aktuella elementet ch från indataströmmen, sedan avancera den aktuella strömpositionen och returnera elementet som traits_type::to_int_type( ch). Det kan göra det på olika sätt:
Om en läsposition är tillgänglig tar den ch som elementet som lagras i läspositionen och flyttar fram nästa pekare för indatabufferten.
Det kan läsa ett element direkt, från någon extern källa, och leverera det som värdet ch.
För en strömbuffert med vanliga indata- och utdataströmmar kan den göra en läsposition tillgänglig genom att skriva ut, till något externt mål, vissa eller alla element mellan början och nästa pekare för utdatabufferten. Eller så kan den allokera ny eller ytterligare lagring för indatabufferten. Funktionen läser sedan in ett eller flera element från en extern källa.
Om funktionen inte kan lyckas returnerar den traits_type::eof eller utlöser ett undantag. Annars returneras det aktuella elementet ch i indataströmmen, konverterat enligt beskrivningen ovan, och flyttar fram nästa pekare för indatabufferten. Standardbeteendet är att anropa underflöde och, om funktionen returnerar traits_type::eof, för att returnera traits_type::eof. Annars returnerar funktionen det aktuella elementet ch i indataströmmen, konverterat enligt tidigare beskrivning, och flyttar fram nästa pekare för indatabufferten.
basic_streambuf::underflöde
Skyddad virtuell funktion för att extrahera det aktuella elementet från indataströmmen.
virtual int_type underflow();
Returvärde
Det aktuella elementet.
Anmärkningar
Den skyddade virtuella medlemsfunktionen strävar efter att extrahera det aktuella elementet ch från indataströmmen, utan att flytta fram den aktuella strömpositionen och returnera den som traits_type::to_int_type( ch). Det kan göra det på olika sätt:
Om en läsposition är tillgänglig är ch elementet som lagras i läspositionen. Mer information finns i avsnittet Anmärkningar i klassen basic_streambuf.
Det kan göra en läsposition tillgänglig genom att allokera ny eller ytterligare lagring för indatabufferten och sedan läsa in, från någon extern källa, ett eller flera element. Mer information finns i avsnittet Anmärkningar i klassen basic_streambuf.
Om funktionen inte kan lyckas returnerar traits_type:: den eof() eller utlöser ett undantag. Annars returneras det aktuella elementet i indataströmmen, konverterat enligt tidigare beskrivning. Standardbeteendet är att returnera traits_type::eof().
Den virtuella underflow funktionen, med funktionerna sync och overflow , definierar egenskaperna för streambuf-derived-klassen. Varje härledd klass kan implementeras underflow på olika sätt, men gränssnittet med den anropande strömklassen är detsamma.
Funktionen underflow anropas oftast av offentliga streambuf funktioner som sgetc och sgetn när get-området är tomt, men andra klasser, inklusive strömklasserna, kan anropa underflow när som helst.
Funktionen underflow förser get-området med tecken från indatakällan. Om get-området innehåller tecken underflow returnerar det första tecknet. Om get-området är tomt fyller det hämta-området och returnerar nästa tecken (som det lämnar i get-området). Om det inte finns några fler tecken tillgängliga underflow returnerar EOF och lämnar området tomt.
strstreambuf I klassen underflow justerar egptr-pekaren för att få åtkomst till lagring som dynamiskt allokerades av ett anrop till overflow.
basic_streambuf::xsgetn
Skyddad virtuell funktion för att extrahera element från indataströmmen.
Den här metoden är potentiellt osäker eftersom den förlitar sig på anroparen för att kontrollera att de anförda värdena är korrekta.
virtual streamsize xsgetn(
char_type* ptr,
streamsize count);
Parameterar
ptr
Bufferten som ska innehålla de extraherade tecknen.
antal
Antalet element som ska extraheras.
Returvärde
Antalet element som extraherats.
Anmärkningar
Funktionen för skyddad virtuell medlem extraherar upp till antal element från indataströmmen, som vid upprepade anrop till sbumpc, och lagrar dem i matrisen som börjar på ptr. Det returnerar antalet element som extraherats.
basic_streambuf::xsputn
Skyddad virtuell funktion för att infoga element i utdataströmmen.
virtual streamsize xsputn(const char_type* ptr, streamsize count);
Parameterar
ptr
Pekare till element som ska infogas.
antal
Antal element som ska infogas.
Returvärde
Antalet element som infogats i strömmen.
Anmärkningar
Den skyddade virtuella medlemsfunktionen infogar upp till antal element i utdataströmmen, som vid upprepade anrop till sputc, från matrisen som börjar vid ptr. Infogningen av tecken i utdataströmmen stoppas när alla antal tecken har skrivits, eller om anropet sputc( count) skulle returnera traits::eof(). Det returnerar antalet infogade element.
Se även
Trådsäkerhet i C++ Standard Library
iostream-programmering
iostreams-konventioner