Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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::innem aero, a bemeneti puffer elérhető. További információ: basic_streambuf Osztály.Ha
mode & ios_base::outnem 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