basic_stringbuf — Klasa
Opisuje bufor strumienia, który kontroluje transmisję elementów typu Elem
, których cechy znaków są określane przez klasę Tr
, do i z sekwencji elementów przechowywanych w obiekcie tablicy.
Składnia
template <class Elem, class Tr = char_traits<Elem>,
class Alloc = allocator<Elem>>
class basic_stringbuf : public basic_streambuf<Elem, Tr>
Parametry
Alloc
Klasa alokatora.
Elem
Typ podstawowego elementu ciągu.
Tr
Cechy znaków specjalizował się w podstawowym elemecie ciągu.
Uwagi
Obiekt jest przydzielany, rozszerzony i zwalniany w razie potrzeby, aby uwzględnić zmiany w sekwencji.
Obiekt klasy basic_stringbuf<Tr
Elem
,> Alloc
przechowuje kopię argumentuios_base::
openmode z jego konstruktora jako stringbuf
tryb trybu:
Jeśli
mode & ios_base::in
jest niezerowy, bufor wejściowy jest dostępny. Aby uzyskać więcej informacji, zobacz basic_streambuf Class (Klasa basic_streambuf).Jeśli
mode & ios_base::out
jest niezerowy, bufor wyjściowy jest dostępny.
Konstruktory
Konstruktor | opis |
---|---|
basic_stringbuf | Tworzy obiekt typu basic_stringbuf . |
Typedefs
Nazwa typu | opis |
---|---|
allocator_type | Typ jest synonimem parametru szablonu Alloc. |
char_type | Kojarzy nazwę typu z parametrem szablonu Elem . |
int_type | Określa, że ten typ w basic_filebuf zakresie jest odpowiednikiem typu tej samej nazwy w zakresie Tr . |
off_type | Określa, że ten typ w basic_filebuf zakresie jest odpowiednikiem typu tej samej nazwy w zakresie Tr . |
pos_type | Określa, że ten typ w basic_filebuf zakresie jest odpowiednikiem typu tej samej nazwy w zakresie Tr . |
traits_type | Kojarzy nazwę typu z parametrem szablonu Tr . |
Funkcje składowe
Funkcja składowa | opis |
---|---|
przepełnienie | Chroniona funkcja wirtualna, która może być wywoływana, gdy nowy znak zostanie wstawiony do pełnego buforu. |
pbackfail | Chroniona funkcja wirtualnego elementu członkowskiego próbuje przywrócić element do buforu wejściowego, a następnie sprawia, że jest to bieżący element (wskazywany przez następny wskaźnik). |
seekoff | Chroniona funkcja wirtualnego elementu członkowskiego próbuje zmienić bieżące pozycje dla kontrolowanych strumieni. |
seekpos | Chroniona funkcja wirtualnego elementu członkowskiego próbuje zmienić bieżące pozycje dla kontrolowanych strumieni. |
Str | Ustawia lub pobiera tekst w buforze ciągów bez zmiany położenia zapisu. |
swap | |
Niedomiar | Chroniona funkcja wirtualnego elementu członkowskiego w celu wyodrębnienia bieżącego elementu ze strumienia wejściowego. |
Wymagania
Nagłówek:<sstream>
Przestrzeń nazw: std
basic_stringbuf::allocator_type
Typ jest synonimem parametru szablonu Alloc.
typedef Alloc allocator_type;
basic_stringbuf::basic_stringbuf
Tworzy obiekt 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
_Tryb
Jedno z wyliczeń w ios_base::openmode.
Str
Obiekt typu basic_string.
Uwagi
Pierwszy konstruktor przechowuje wskaźnik o wartości null we wszystkich wskaźnikach kontrolujących bufor wejściowy i bufor wyjściowy. Aby uzyskać więcej informacji, zobacz sekcję Uwagi klasy basic_streambuf. Przechowuje również _Mode jako tryb stringbuf. Aby uzyskać więcej informacji, zobacz sekcję Uwagi klasy basic_stringbuf.
Drugi konstruktor przydziela kopię sekwencji kontrolowanej przez str obiektu ciągu. Jeśli _Mode & ios_base::in
jest nonzero, ustawia bufor wejściowy, aby rozpocząć odczytywanie na początku sekwencji. Jeśli _Mode & ios_base::out
jest niezerowy, ustawia bufor wyjściowy, aby rozpocząć zapisywanie na początku sekwencji. Przechowuje również _Mode jako tryb stringbuf. Aby uzyskać więcej informacji, zobacz sekcję Uwagi klasy basic_stringbuf.
basic_stringbuf::char_type
Kojarzy nazwę typu z parametrem szablonu Elem .
typedef Elem char_type;
basic_stringbuf::int_type
Określa, że ten typ w zakresie basic_filebuf odpowiada typowi tej samej nazwy w Tr
zakresie.
typedef typename traits_type::int_type int_type;
basic_stringbuf::off_type
Określa, że ten typ w zakresie basic_filebuf odpowiada typowi tej samej nazwy w Tr
zakresie.
typedef typename traits_type::off_type off_type;
basic_stringbuf::overflow
Chroniona funkcja wirtualna, którą można wywołać, gdy nowy znak zostanie wstawiony do pełnego buforu.
virtual int_type overflow(int_type _Meta = traits_type::eof());
Parametry
_Meta
Znak do wstawienia do buforu lub traits_type::eof
.
Wartość zwracana
Jeśli funkcja nie może zakończyć się powodzeniem, zwraca wartość traits_type::eof
. W przeciwnym razie zwraca traits_type::not_eof(_ Meta).
Uwagi
Jeśli _Meta nie porównuje wartości równej traits_type::eof, chroniona funkcja wirtualna elementu członkowskiego próbuje wstawić element traits_type::to_char_type(_Meta) do buforu wyjściowego. Może to zrobić na różne sposoby:
Jeśli pozycja zapisu jest dostępna, może przechowywać element w pozycji zapisu i zwiększać następny wskaźnik dla buforu wyjściowego.
Może ona udostępnić pozycję zapisu, przydzielając nowy lub dodatkowy magazyn dla buforu wyjściowego. Rozszerzenie buforu wyjściowego w ten sposób powoduje również rozszerzenie dowolnego skojarzonego buforu wejściowego.
basic_stringbuf::p backfail
Chroniona funkcja wirtualnego elementu członkowskiego próbuje przywrócić element do buforu wejściowego, a następnie ustawić go jako bieżący element (wskazywany przez następny wskaźnik).
virtual int_type pbackfail(int_type _Meta = traits_type::eof());
Parametry
_Meta
Znak do wstawienia do buforu lub traits_type::eof
.
Wartość zwracana
Jeśli funkcja nie może zakończyć się powodzeniem, zwraca wartość traits_type::eof
. W przeciwnym razie zwraca traits_type::not_eof(_ Meta).
Uwagi
Jeśli _Meta porównuje wartość równą traits_type::eof, element do odepchnięcia jest skutecznie tym, który znajduje się już w strumieniu przed bieżącym elementem. W przeciwnym razie ten element jest zastępowany przez bajt = traits_type::to_char_type(_ Meta). Funkcja może umieścić element na różne sposoby:
Jeśli jest dostępna pozycja odłogowania, a przechowywany tam element porównuje wartość równą bajtowi, może odkreślić następny wskaźnik dla buforu wejściowego.
Jeśli jest dostępna pozycja putback, a tryb stringbuf zezwala na zmianę sekwencji ( tryb i ios_base::out jest niezerowy), może przechowywać bajt w pozycji putback i dekrementować następny wskaźnik dla buforu wejściowego.
basic_stringbuf::p os_type
Określa, że ten typ w zakresie basic_filebuf odpowiada typowi tej samej nazwy w Tr
zakresie.
typedef typename traits_type::pos_type pos_type;
basic_stringbuf::seekoff
Chroniona funkcja wirtualnego elementu członkowskiego próbuje zmienić bieżące pozycje dla kontrolowanych strumieni.
virtual pos_type seekoff(
off_type _Off,
ios_base::seekdir _Way,
ios_base::openmode _Mode = ios_base::in | ios_base::out);
Parametry
_Od
Stanowisko do poszukiwania względem _Way. Aby uzyskać więcej informacji, zobacz basic_stringbuf::off_type.
_Droga
Punkt początkowy operacji przesunięcia. Aby uzyskać możliwe wartości, zobacz ios_base::seekdir .
_Tryb
Określa tryb położenia wskaźnika. Ustawieniem domyślnym jest umożliwienie modyfikowania pozycji odczytu i zapisu. Aby uzyskać więcej informacji, zobacz ios_base::openmode.
Wartość zwracana
Zwraca nową pozycję lub nieprawidłową pozycję strumienia.
Uwagi
W przypadku obiektu klasy basic_stringbuf<Elem, Tr, Alloc>
pozycja strumienia składa się wyłącznie z przesunięcia strumienia. Przesunięcie zero wyznacza pierwszy element kontrolowanej sekwencji.
Nowe stanowisko jest określane w następujący sposób:
Jeśli
_Way
==ios_base::beg
, nowa pozycja to początek strumienia i _Off.Jeśli
_Way
==ios_base::cur
, nowe położenie to bieżące położenie strumienia i _Off.Jeśli
_Way
==ios_base::end
nowa pozycja to koniec strumienia i _Off.
Jeśli _Mode & ios_base::in
jest nonzero, funkcja zmienia kolejną pozycję, aby odczytać w buforze wejściowym. Jeśli _Mode & ios_base::out
element jest inny niżzer, funkcja zmienia kolejną pozycję, aby zapisać w buforze wyjściowym. Aby mieć wpływ na strumień, jego bufor musi istnieć. Aby operacja pozycjonowania powiodła się, wynikowa pozycja strumienia musi znajdować się w kontrolowanej sekwencji. Jeśli funkcja ma wpływ na obie pozycje strumienia, _Way musi być ios_base::beg
lub ios_base::end
, a oba strumienie są umieszczone w tym samym elemecie. W przeciwnym razie (lub jeśli żadna pozycja nie ma wpływu), operacja pozycjonowania kończy się niepowodzeniem.
Jeśli funkcja zakończy się powodzeniem w zmianie pozycji strumienia lub obu tych pozycji, zwraca wynikową pozycję strumienia. W przeciwnym razie kończy się niepowodzeniem i zwraca nieprawidłową pozycję strumienia.
basic_stringbuf::seekpos
Chroniona funkcja wirtualnego elementu członkowskiego próbuje zmienić bieżące pozycje dla kontrolowanych strumieni.
virtual pos_type seekpos(pos_type _Sp, ios_base::openmode _Mode = ios_base::in | ios_base::out);
Parametry
_Sp
Stanowisko do poszukiwania.
_Tryb
Określa tryb położenia wskaźnika. Ustawieniem domyślnym jest umożliwienie modyfikowania pozycji odczytu i zapisu.
Wartość zwracana
Jeśli funkcja zakończy się powodzeniem w zmianie pozycji strumienia lub obu tych pozycji, zwraca wynikową pozycję strumienia. W przeciwnym razie kończy się niepowodzeniem i zwraca nieprawidłową pozycję strumienia. Aby określić, czy pozycja strumienia jest nieprawidłowa, porównaj wartość zwracaną z pos_type(off_type(-1))
.
Uwagi
Dla obiektu klasy basic_stringbuf<Elem, Tr, Alloc
>, pozycja strumienia składa się wyłącznie z przesunięcia strumienia. Przesunięcie zero wyznacza pierwszy element kontrolowanej sekwencji. Nowe stanowisko jest określane przez _ Sp.
Jeśli tryb i ios_base::in jest niezerowy, funkcja zmienia kolejną pozycję, aby odczytać w buforze wejściowym. Jeśli tryb i ios_base::out jest niezerowy, funkcja zmienia kolejną pozycję zapisu w buforze wyjściowym. Aby mieć wpływ na strumień, jego bufor musi istnieć. Aby operacja pozycjonowania powiodła się, wynikowa pozycja strumienia musi znajdować się w kontrolowanej sekwencji. W przeciwnym razie (lub jeśli żadna pozycja nie ma wpływu), operacja pozycjonowania kończy się niepowodzeniem.
basic_stringbuf::str
Ustawia lub pobiera tekst w buforze ciągów bez zmiany położenia zapisu.
basic_string<Elem, Tr, Alloc> str() const;
void str(
const basic_string<Elem, Tr, Alloc>& _Newstr);
Parametry
_Newstr
Nowy ciąg.
Wartość zwracana
Zwraca obiekt klasy basic_string<Elem, Tr, Alloc> , którego kontrolowana sekwencja jest kopią sekwencji kontrolowanej przez .*this
Uwagi
Pierwsza funkcja składowa zwraca obiekt klasy basic_string<Elem, Tr, Alloc
>, którego kontrolowana sekwencja jest kopią sekwencji kontrolowanej przez *this
. Skopiowana sekwencja zależy od przechowywanego trybu stringbuf:
Jeśli tryb i ios_base::out nie sązerowe, a bufor wyjściowy istnieje, sekwencja jest całym buforem wyjściowym ( elementy epptr - pbase rozpoczynające się od ).
pbase
Jeśli tryb i ios_base::in jest niezerowy, a bufor wejściowy istnieje, sekwencja jest całym buforem wejściowym ( elementy powrotu egptr - rozpoczynające się od ).
eback
W przeciwnym razie skopiowana sekwencja jest pusta.
Druga funkcja składowa cofa przydział dowolnej sekwencji obecnie kontrolowanej przez *this
program . Następnie przydziela kopię sekwencji kontrolowanej przez _Newstr. Jeśli tryb i ios_base::in jest niezerowy, ustawia bufor wejściowy, aby rozpocząć odczytywanie na początku sekwencji. Jeśli tryb i ios_base::out nie sązerowe, ustawia bufor wyjściowy, aby rozpocząć zapisywanie na początku sekwencji.
Przykład
// 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
Kojarzy nazwę typu z parametrem szablonu Tr .
typedef Tr traits_type;
Uwagi
Typ jest synonimem parametru szablonu Tr.
basic_stringbuf::underflow
Chroniona funkcja wirtualna w celu wyodrębnienia bieżącego elementu ze strumienia wejściowego.
virtual int_type underflow();
Wartość zwracana
Jeśli funkcja nie powiedzie się, zwraca traits_type::eof. W przeciwnym razie zwraca bieżący element w strumieniu wejściowym, który jest konwertowany.
Uwagi
Chroniona funkcja wirtualnego elementu członkowskiego próbuje wyodrębnić bieżący element byte
z buforu wejściowego, przejść bieżącą pozycję strumienia i zwrócić element jako traits_type::to_int_type( bajt). Może to zrobić w jeden sposób: jeśli pozycja odczytu jest dostępna, przyjmuje byte
jako element przechowywany w pozycji odczytu i przechodzi następny wskaźnik dla buforu wejściowego.
basic_streambuf::swap
Zamienia zawartość tego buforu ciągu za pomocą innego buforu ciągów.
void basic_stringbuf<T>::swap(basic_stringbuf& other)
Parametry
inny
Basic_stringbuf, którego zawartość zostanie zamieniony na tę basic_stringbuf.
Uwagi
basic_stringbuf::operator=
Przypisuje zawartość basic_stringbuf po prawej stronie operatora do basic_stringbuf po lewej stronie.
basic_stringbuf& basic_stringbuf:: operator=(const basic_stringbuf& other)
Parametry
inny
Basic_stringbuf, którego zawartość, w tym cechy ustawień regionalnych, zostanie przypisana do ciągubuf po lewej stronie operatora.
Uwagi
Zobacz też
Bezpieczeństwo wątku w standardowej bibliotece C++
iostream, programowanie
Konwencje iostream