Udostępnij za pośrednictwem


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<TrElem ,>Allocprzechowuje 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_filebufzakresie jest odpowiednikiem typu tej samej nazwy w zakresie Tr .
off_type Określa, że ten typ w basic_filebufzakresie jest odpowiednikiem typu tej samej nazwy w zakresie Tr .
pos_type Określa, że ten typ w basic_filebufzakresie 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

_Off
Stanowisko do poszukiwania względem _Way. Aby uzyskać więcej informacji, zobacz basic_stringbuf::off_type.

_Sposób
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::endnowa 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 *thisprogram . 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

Innych
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

Innych
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