Megosztás:


basic_stringbuf osztály

Egy streampuffert ír le, amely egy tömbobjektumban tárolt elemek sorozatára szabályozza az olyan típusú Elemelemek átvitelét, amelyek karaktertulajdonságait az osztály Trhatározza meg.

Szemantika

template <class Elem, class Tr = char_traits<Elem>,
    class Alloc = allocator<Elem>>
class basic_stringbuf : public basic_streambuf<Elem, Tr>

Paraméterek

Alloc
A kiosztó osztály.

Elem
A sztring alapelemének típusa.

Tr
A sztring alapelemére specializálódott karaktertulajdonságok.

Megjegyzések

Az objektum lefoglalása, kiterjesztése és felszabadítása szükséges a sorozat változásainak kezeléséhez.

Az basic_stringbuf<Alloc>ElemTr osztály objektuma az openmode argumentum másolatát tárolja a ios_base:: konstruktorból stringbuf mód mód módként:

  • Ha mode & ios_base::in nem aero, a bemeneti puffer elérhető. További információ: basic_streambuf Osztály.

  • Ha mode & ios_base::out nem aero, a kimeneti puffer elérhető.

Konstruktorok

Konstruktor Leírás
basic_stringbuf Egy típusú basic_stringbufobjektumot hoz létre.

Typedefs

Típus neve Leírás
allocator_type A típus az Alloc sablonparaméter szinonimája.
char_type Típusnevet társít az Elem sablonparaméterhez.
int_type Ez a típus a hatókörön belül basic_filebufmegegyezik a Tr-hatókör azonos nevének típusával.
off_type Ez a típus a hatókörön belül basic_filebufmegegyezik a Tr-hatókör azonos nevének típusával.
pos_type Ez a típus a hatókörön belül basic_filebufmegegyezik a Tr-hatókör azonos nevének típusával.
traits_type Típusnevet társít a Tr-sablon paraméterhez.

Tagfüggvények

Tagfüggvény Leírás
bővelkedik Védett virtuális függvény, amely meghívható, ha egy új karaktert beszúr egy teljes pufferbe.
pbackfail A védett virtuális tagfüggvény megpróbál visszatenni egy elemet a bemeneti pufferbe, majd az aktuális elemet (a következő mutatóra mutatva) teszi.
lekérés A védett virtuális tagfüggvény megpróbálja módosítani az ellenőrzött streamek aktuális pozícióit.
seekpos A védett virtuális tagfüggvény megpróbálja módosítani az ellenőrzött streamek aktuális pozícióit.
Str Beállítja vagy lekéri a szöveget egy sztringpufferben az írási pozíció módosítása nélkül.
cserél
alulcsordulás A védett virtuális tagfüggvény, amely kinyeri az aktuális elemet a bemeneti adatfolyamból.

Követelmények

Fejléc:<sstream>

Névtér: std

basic_stringbuf::allocator_type

A típus az Alloc sablonparaméter szinonimája.

typedef Alloc allocator_type;

basic_stringbuf::basic_stringbuf

Egy típusú basic_stringbufobjektumot hoz létre.

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);

Paraméterek

_Üzemmód
Az ios_base::openmode enumerációinak egyike.

Str
Egy basic_string típusú objektum.

Megjegyzések

Az első konstruktor null mutatót tárol a bemeneti puffert és a kimeneti puffert vezérlő összes mutatóban. További információt a basic_streambuf osztály Megjegyzések szakaszában talál. Emellett sztringbuf módként tárolja a _Mode . További információt a basic_stringbuf osztály Megjegyzések szakaszában talál.

A második konstruktor lefoglalja a sztringobjektum által vezérelt sorozat másolatát. Ha _Mode & ios_base::in nem aero, a bemeneti puffert úgy állítja be, hogy a sorozat elején kezdje el az olvasást. Ha _Mode & ios_base::out nem nulla, a kimeneti puffert úgy állítja be, hogy a sorozat elején kezdjen írni. Emellett sztringbuf módként tárolja a _Mode . További információt a basic_stringbuf osztály Megjegyzések szakaszában talál.

basic_stringbuf::char_type

Típusnevet társít az Elem sablonparaméterhez.

typedef Elem char_type;

basic_stringbuf::int_type

Ez a típus basic_filebuf hatókörén belül megegyezik a hatókör azonos Tr nevének típusával.

typedef typename traits_type::int_type int_type;

basic_stringbuf::off_type

Ez a típus basic_filebuf hatókörén belül megegyezik a hatókör azonos Tr nevének típusával.

typedef typename traits_type::off_type off_type;

basic_stringbuf::overflow

Védett virtuális függvény, amely akkor hívható meg, ha új karaktert szúr be egy teljes pufferbe.

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

Paraméterek

_Meta
A pufferbe beszúrni kívánt karakter vagy traits_type::eof.

Visszaadott érték

Ha a függvény nem sikerül, a függvény visszaadja a következőt traits_type::eof: . Ellenkező esetben a következő traits_type::not_eof(_ Meta) értéket adja vissza.

Megjegyzések

Ha _Meta nem egyenlő a traits_type::eof értékével, a védett virtuális tagfüggvény megpróbálja beszúrni a kimeneti pufferbe a traits_type::to_char_type(_Meta) elemet. Ezt többféleképpen teheti meg:

  • Ha elérhető írási pozíció, az elemet az írási pozícióba helyezheti, és a kimeneti puffer következő mutatóját növekményessé teheti.

  • Az írási pozíciót úgy teheti elérhetővé, hogy új vagy további tárolót rendel a kimeneti pufferhez. A kimeneti puffer ily módon történő kiterjesztése a kapcsolódó bemeneti puffereket is kiterjeszti.

basic_stringbuf::p backfail

A védett virtuális tagfüggvény megpróbál visszatenni egy elemet a bemeneti pufferbe, majd az aktuális elemként beállítani (a következő mutatóra mutatva).

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

Paraméterek

_Meta
A pufferbe beszúrni kívánt karakter vagy traits_type::eof.

Visszaadott érték

Ha a függvény nem sikerül, a függvény visszaadja a következőt traits_type::eof: . Ellenkező esetben a következő traits_type::not_eof(_ Meta) értéket adja vissza.

Megjegyzések

Ha _Meta egyenlő a traits_type::eof értékével, akkor a visszaküldési elem tulajdonképpen az, amelyik már az aktuális elem előtt van a streamben. Ellenkező esetben ezt az elemet bájttraits_type::to_char_type(_ Meta) váltja fel = . A függvény többféleképpen is vissza tud állítani egy elemet:

  • Ha rendelkezésre áll egy tartalék pozíció, és az ott tárolt elem egyenlő a bájttal, akkor a bemeneti puffer következő mutatója csökkenhet.

  • Ha rendelkezésre áll egy visszahelyezési pozíció, és ha a sztringbuf mód lehetővé teszi a sorozat módosítását ( mód &ios_base::a ki nemzero), akkor a bájtot a visszahelyezési pozícióba tárolhatja, és a bemeneti puffer következő mutatóját vissza lehet állítani.

basic_stringbuf::p os_type

Ez a típus basic_filebuf hatókörén belül megegyezik a hatókör azonos Tr nevének típusával.

typedef typename traits_type::pos_type pos_type;

basic_stringbuf::seekoff

A védett virtuális tagfüggvény megpróbálja módosítani az ellenőrzött streamek aktuális pozícióit.

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

Paraméterek

_Ki
A _Way-hez viszonyítva keresendő pozíció. További információ: basic_stringbuf::off_type.

_Út
Az eltolási műveletek kiindulópontja. A lehetséges értékekért lásd: ios_base::seekdir .

_Üzemmód
A mutató pozíciójának módját adja meg. Az alapértelmezett beállítás az olvasási és írási pozíciók módosításának engedélyezése. További információ: ios_base::openmode.

Visszaadott érték

Az új vagy érvénytelen streampozíciót adja vissza.

Megjegyzések

Egy osztályobjektum basic_stringbuf<Elem, Tr, Alloc>esetében a streampozíció pusztán egy streameltetésből áll. A nulla eltolás a szabályozott sorozat első elemét jelöli.

Az új pozíció az alábbiak szerint van meghatározva:

  • Ha _Way == ios_base::begaz új pozíció a stream kezdete és _Off.

  • Ha _Way == ios_base::cur, az új pozíció az aktuális streampozíció és _Off.

  • Ha _Way == ios_base::endaz új pozíció a stream vége és _Off.

Ha _Mode & ios_base::in nem nulla, a függvény módosítja a következő pozíciót a bemeneti pufferben való olvasáshoz. Ha _Mode & ios_base::out nem nulla, a függvény a következő pozíciót módosítja a kimeneti pufferbe való íráshoz. Ahhoz, hogy egy adatfolyam érintett legyen, a puffernek léteznie kell. Ahhoz, hogy egy pozicionálási művelet sikeres legyen, az eredményül kapott streampozíciónak a szabályozott sorrendben kell lennie. Ha a függvény mindkét streampozíciót érinti, _Way kell lennie ios_base::beg , és ios_base::end mindkét streamnek ugyanabban az elemben kell lennie. Ellenkező esetben (vagy ha egyik pozíció sem érintett), a pozicionálási művelet meghiúsul.

Ha a függvénynek sikerül módosítania vagy mindkét streampozíciót, az eredményül kapott streampozíciót adja vissza. Ellenkező esetben meghiúsul, és érvénytelen streampozíciót ad vissza.

basic_stringbuf::seekpos

A védett virtuális tagfüggvény megpróbálja módosítani az ellenőrzött streamek aktuális pozícióit.

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

Paraméterek

_Sp
A keresett pozíció.

_Üzemmód
A mutató pozíciójának módját adja meg. Az alapértelmezett beállítás az olvasási és írási pozíciók módosításának engedélyezése.

Visszaadott érték

Ha a függvénynek sikerül módosítania vagy mindkét streampozíciót, az eredményül kapott streampozíciót adja vissza. Ellenkező esetben meghiúsul, és érvénytelen streampozíciót ad vissza. Annak megállapításához, hogy a stream pozíciója érvénytelen-e, hasonlítsa össze a visszatérési értéket a következővel pos_type(off_type(-1)): .

Megjegyzések

A basic_stringbuf<Elem, TrAlloc> osztály objektumai esetében a streampozíciók kizárólag streameltetésből állnak. A nulla eltolás a szabályozott sorozat első elemét jelöli. Az új pozíciót a _ Sp határozza meg.

Ha a mód &ios_base::in nem, a függvény módosítja a következő pozíciót a bemeneti pufferben való olvasáshoz. Ha a mód &ios_base::out nem ero, a függvény módosítja a következő pozíciót a kimeneti pufferbe való íráshoz. Ahhoz, hogy egy adatfolyam érintett legyen, a puffernek léteznie kell. Ahhoz, hogy egy pozicionálási művelet sikeres legyen, az eredményül kapott streampozíciónak a szabályozott sorrendben kell lennie. Ellenkező esetben (vagy ha egyik pozíció sem érintett), a pozicionálási művelet meghiúsul.

basic_stringbuf::str

Beállítja vagy lekéri a szöveget egy sztringpufferben az írási pozíció módosítása nélkül.

basic_string<Elem, Tr, Alloc> str() const;
void str(
    const basic_string<Elem, Tr, Alloc>& _Newstr);

Paraméterek

_Newstr
Az új sztring.

Visszaadott érték

A basic_string<Elem, Tr, Alloc > osztály egy objektumát adja vissza, amelynek szabályozott sorrendje a sorozat egy másolata.*this

Megjegyzések

Az első tagfüggvény a basic_string<Elem, Tr osztály egyik objektumát adja vissza, Alloc>amelynek szabályozott sorrendje a sorozat *thisegy másolata. A másolt sorozat a tárolt sztringbuf módtól függ:

  • Ha a mód &ios_base::out nem ero, és létezik kimeneti puffer, akkor a sorozat a teljes kimeneti puffer ( epptr - pbase elemek kezdve pbase).

  • Ha a mód &ios_base::in nem ero, és egy bemeneti puffer létezik, a sorozat a teljes bemeneti puffer ( egptr - eback elemek kezdve eback).

  • Ellenkező esetben a másolt sorozat üres.

A második tagfüggvény felszabadítja az aktuálisan szabályozott *thissorozatokat. Ezután lefoglalja a _Newstr által vezérelt sorozat egy példányát. Ha a mód &ios_base::in nem ero, a bemeneti puffert úgy állítja be, hogy a sorozat elején kezdje el az olvasást. Ha a mód &ios_base::out nem ero, a kimeneti puffert úgy állítja be, hogy a sorozat elején kezdjen írni.

példa

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

Típusnevet társít a Tr-sablon paraméterhez.

typedef Tr traits_type;

Megjegyzések

A típus a Tr sablonparaméter szinonimája.

basic_stringbuf::alácsordulás

Védett virtuális függvény, amely kinyeri az aktuális elemet a bemeneti adatfolyamból.

virtual int_type underflow();

Visszaadott érték

Ha a függvény nem sikerül, traits_type ::eof értéket ad vissza. Ellenkező esetben a bemeneti adatfolyam aktuális elemét adja vissza, amelyet konvertál.

Megjegyzések

A védett virtuális tagfüggvény megpróbálja kinyerni az aktuális elemet byte a bemeneti pufferből, előléptetni az aktuális streampozíciót, és visszaadni az elemet traits_type::to_int_type( bájt). Ezt egy módon teheti meg: Ha elérhető olvasási pozíció, az olvasási pozícióban tárolt elemet veszi igénybe byte , és a bemeneti puffer következő mutatóját viszi előre.

basic_streambuf::swap

A sztringpuffer tartalmának felcserélése egy másik sztringpufferrel.

void basic_stringbuf<T>::swap(basic_stringbuf& other)

Paraméterek

egyéb
Az a basic_stringbuf, amelynek tartalma fel lesz cserélve ezzel a basic_stringbuf.

basic_stringbuf::operátor=

Az operátor jobb oldalán lévő basic_stringbuf tartalmát a bal oldali basic_stringbuf rendeli hozzá.

basic_stringbuf& basic_stringbuf:: operator=(const basic_stringbuf& other)

Paraméterek

egyéb
Egy basic_stringbuf, amelynek tartalma, beleértve a területi tulajdonságokat is, az operátor bal oldalán lévő sztringbufhoz lesz rendelve.

Lásd még

Szálbiztonság a C++ Standard könyvtárban
iostream programozás
iostreams-egyezmények