Freigeben über


basic_stringbuf-Klasse

Beschreibt einen die Übertragung zu und aus einer Sequenz von in einem Arrayobjekt gespeicherten Elementen von Elementen des Typs Elem steuernden Streampuffer, dessen Zeichenmerkmale durch die Klasse Tr ermittelt werden.

Syntax

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

Parameter

Alloc
Die Zuweisungsklasse.

Elem
Der Typ des grundlegenden Elements der Zeichenfolge.

Tr
Die für das grundlegende Element der Zeichenfolge spezialisierten Zeichenmerkmale.

Hinweise

Das Objekt wird reserviert, erweitert und freigegeben, sofern erforderlich, um Änderungen in der Sequenz zu berücksichtigen.

Ein Objekt der Klasse basic_stringbuf<TrElem speichert> Alloceine Kopie desios_base:: Openmode-Arguments aus dem Konstruktor als stringbuf Modusmodus:

  • Wenn mode & ios_base::in ungleich 0 ist, kann auf den Eingabepuffer zugegriffen werden. Weitere Informationen finden Sie unter basic_streambuf-Klasse.

  • Wenn mode & ios_base::out ungleich 0 ist, kann auf den Ausgabepuffer zugegriffen werden.

Konstruktoren

Konstruktor Beschreibung
basic_stringbuf Konstruiert ein Objekt vom Typ basic_stringbuf.

TypeDefs

Typname Beschreibung
allocator_type Der Typ ist ein Synonym für den Vorlagenparameter Alloc.
char_type Verknüpft einen Typnamen mit dem Vorlagenparameter Elem.
int_type Macht diesen Typ innerhalb basic_filebufdes Bereichs gleichbedeutend mit dem Typ desselben Namens im Tr-Bereich .
off_type Macht diesen Typ innerhalb basic_filebufdes Bereichs gleichbedeutend mit dem Typ desselben Namens im Tr-Bereich .
pos_type Macht diesen Typ innerhalb basic_filebufdes Bereichs gleichbedeutend mit dem Typ desselben Namens im Tr-Bereich .
traits_type Verknüpft einen Typnamen mit dem Vorlagenparameter Tr.

Memberfunktionen

Memberfunktion Beschreibung
overflow Eine geschützte virtuelle Funktion, die aufgerufen werden kann, wenn ein neues Zeichen in einen vollen Puffer eingefügt wird.
pbackfail Die geschützte virtuelle Memberfunktion versucht, ein Element zurück in den Eingabepuffer zu versetzen und es dann zum aktuellen Element zu ernennen (wird mit dem nächsten Zeiger darauf gezeigt).
seekoff Die geschützte virtuelle Memberfunktion versucht, die aktuellen Positionen für die gesteuerten Streams zu ändern.
seekpos Die geschützte virtuelle Memberfunktion versucht, die aktuellen Positionen für die gesteuerten Streams zu ändern.
str Legt den Text in einem Zeichenfolgenpuffer fest, ohne die Schreibposition zu ändern, oder ruft ihn ab.
swap
underflow Die geschützte virtuelle Memberfunktion versucht, das aktuelle Element aus dem Eingabestream zu extrahieren.

Anforderungen

Header:<sstream>

Namespace: std

basic_stringbuf::allocator_type

Der Typ ist ein Synonym für den Vorlagenparameter Alloc.

typedef Alloc allocator_type;

basic_stringbuf::basic_stringbuf

Konstruiert ein Objekt vom Typ 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);

Parameter

_Modus
Eine der Enumerationen in ios_base::openmode.

str
Ein Objekt vom Typ basic_string.

Hinweise

Der erste Konstruktor speichert einen NULL-Zeiger in allen Zeigern, die den Eingabe- und Ausgabepuffer steuern. Weitere Informationen finden Sie im Abschnitt „Hinweise“ unter basic_streambuf-Klasse. Außerdem werden _Mode als Zeichenfolgenbuf-Modus gespeichert. Weitere Informationen finden Sie im Abschnitt „Hinweise“ unter basic_stringbuf-Klasse.

Der zweite Konstruktor weist eine Kopie der Sequenz zu, die durch das Zeichenfolgenobjekt str gesteuert wird. Wenn _Mode & ios_base::in ungleich null ist, wird festgelegt, dass der Eingabepuffer den Lesevorgang am Anfang der Sequenz beginnt. Wenn _Mode & ios_base::out ungleich null ist, wird festgelegt, dass der Ausgabepuffer den Schreibvorgang am Anfang der Sequenz beginnt. Außerdem werden _Mode als Zeichenfolgenbuf-Modus gespeichert. Weitere Informationen finden Sie im Abschnitt „Hinweise“ unter basic_stringbuf-Klasse.

basic_stringbuf::char_type

Verknüpft einen Typnamen mit dem Vorlagenparameter Elem.

typedef Elem char_type;

basic_stringbuf::int_type

Macht diesen Typ innerhalb des Bereichs basic_filebuf gleichbedeutend mit dem Typ desselben Namens im Tr Bereich.

typedef typename traits_type::int_type int_type;

basic_stringbuf::off_type

Macht diesen Typ innerhalb des Bereichs basic_filebuf gleichbedeutend mit dem Typ desselben Namens im Tr Bereich.

typedef typename traits_type::off_type off_type;

basic_stringbuf::overflow

Eine geschützte virtuelle Funktion, die aufgerufen werden kann, wenn ein neues Zeichen in einen vollen Puffer eingefügt wird.

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

Parameter

_Meta
Das Zeichen, das in den Puffer eingefügt werden soll, oder traits_type::eof.

Rückgabewert

Wenn die Funktion nicht erfolgreich sein kann, wird sie zurückgegeben traits_type::eof. Andernfalls wird traits_type::not_eof(_ Meta) zurückgegeben.

Hinweise

Wenn _Meta nicht mit traits_type::eof vergleichen, versucht die geschützte virtuelle Memberfunktion, das Element traits_type::to_char_type(_Meta) in den Ausgabepuffer einzufügen. Hierfür gibt es verschiedene Möglichkeiten:

  • Wenn eine Schreibposition verfügbar ist, kann das Element in der Schreibposition gespeichert werden, und der nächste Zeiger für den Ausgabepuffer kann inkrementiert werden.

  • Eine Schreibposition kann verfügbar gemacht werden, indem neuer oder zusätzlicher Speicher für den Ausgabepuffer zugewiesen wird. Das Erweitern des Ausgabepuffers erweitert auf diese Weise auch alle zugewiesenen Eingabepuffer.

basic_stringbuf::p backfail

Die geschützte virtuelle Memberfunktion versucht, ein Element im Eingabepuffer wiederherzustellen und es dann zum aktuellen Element zu machen (der nächste Zeiger zeigt auf das Element).

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

Parameter

_Meta
Das Zeichen, das in den Puffer eingefügt werden soll, oder traits_type::eof.

Rückgabewert

Wenn die Funktion nicht erfolgreich sein kann, wird sie zurückgegeben traits_type::eof. Andernfalls wird traits_type::not_eof(_ Meta) zurückgegeben.

Hinweise

Wenn _Meta gleich traits_type::eof vergleicht, ist das Element, das zurückgesetzt werden soll, effektiv das Element, das sich bereits im Datenstrom befindet, vor dem aktuellen Element. Andernfalls wird dieses Element durch byte = traits_type::to_char_type(_ Meta) ersetzt. Ein Element kann auf verschiedene Arten durch die Funktion wiederhergestellt werden:

  • Wenn eine Position zur Wiederherstellung verfügbar ist, und das Element, das dort gespeichert ist, „byte“ entspricht, kann der nächste Zeiger für den Eingabepuffer verringert werden.

  • Wenn eine Position zur Wiederherstellung verfügbar ist, und der stringbuf-Modus zulässt, dass die Sequenz geändert wird ( mode & ios_base::out ist ungleich null), kann „byte“ in der Position zur Wiederherstellung gespeichert werden und den nächsten Zeiger für den Eingabepuffer verringern.

basic_stringbuf::p os_type

Macht diesen Typ innerhalb des Bereichs basic_filebuf gleichbedeutend mit dem Typ desselben Namens im Tr Bereich.

typedef typename traits_type::pos_type pos_type;

basic_stringbuf::seekoff

Die geschützte virtuelle Memberfunktion versucht, die aktuellen Positionen für die gesteuerten Streams zu ändern.

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

Parameter

_Aus
Die Position, die relativ zu _Way gesucht werden soll. Weitere Informationen finden Sie unter basic_stringbuf::off_type.

_Weg
Der Startpunkt für Offsetvorgänge. Mögliche Werte sind unter ios_base::seekdir aufgeführt.

_Modus
Gibt den Modus für die Zeigerposition an. Standardmäßig können Lese- und Schreibpositionen geändert werden. Weitere Informationen finden Sie unter ios_base::openmode.

Rückgabewert

Gibt die neue Position oder eine ungültige Streamposition zurück.

Hinweise

Für ein Objekt der Klasse basic_stringbuf<Elem, Tr, Alloc> besteht eine Streamposition nur aus einem Streamoffset. Das Offset Null legt das erste Element der kontrollierten Sequenz fest.

Die neue Position wird wie folgt bestimmt:

  • Ist _Way == ios_base::begdie neue Position der Anfang des Datenstroms plus _Off.

  • Ist _Way == ios_base::curdie neue Position die aktuelle Datenstromposition plus _Off.

  • Ist _Way == ios_base::enddie neue Position das Ende des Datenstroms plus _Off.

Wenn _Mode & ios_base::in ungleich null ist, ändert die Funktion die nächste Position, die im Eingabepuffer gelesen werden soll. Wenn _Mode & ios_base::out ungleich null ist, ändert die Funktion die nächste Position, die im Ausgabepuffer gelesen werden soll. Damit ein Stream betroffen wird, muss ein Puffer bestehen. Damit eine Positionierung erfolgreich ist, muss die resultierende Streamposition innerhalb der kontrollierten Sequenz liegen. Wenn sich die Funktion auf beide Datenstrompositionen auswirkt, muss _Way sein ios_base::beg oder ios_base::end beide Datenströme an demselben Element positioniert werden. Andernfalls (oder wenn keine Position betroffen ist) tritt bei der Positionierung ein Fehler ein.

Wenn die Funktion erfolgreich eine der beiden Streampositionen ändern kann, gibt sie die resultierende Streamposition zurück. Andernfalls schlägt sie fehl und gibt eine ungültige Streamposition zurück.

basic_stringbuf::seekpos

Die geschützte virtuelle Memberfunktion versucht, die aktuellen Positionen für die gesteuerten Streams zu ändern.

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

Parameter

_Sp
Die Position, nach der gesucht werden soll.

_Modus
Gibt den Modus für die Zeigerposition an. Standardmäßig können Lese- und Schreibpositionen geändert werden.

Rückgabewert

Wenn die Funktion erfolgreich eine der beiden Streampositionen ändern kann, gibt sie die resultierende Streamposition zurück. Andernfalls schlägt sie fehl und gibt eine ungültige Streamposition zurück. Vergleichen Sie den Rückgabewert mit pos_type(off_type(-1)), um festzustellen, ob die Streamposition ungültig ist.

Hinweise

Für ein Objekt der Klasse basic_stringbuf<Elem, Tr, Alloc>besteht eine Datenstromposition rein aus einem Datenstromversatz. Das Offset Null legt das erste Element der kontrollierten Sequenz fest. Die neue Position wird von _ Sp bestimmt.

Wenn mode & ios_base::in ungleich null ist, ändert die Funktion die nächste Position, die in den Eingabepuffer gelesen werden soll. Wenn mode & ios_base::out ungleich null ist, ändert die Funktion die nächste Position, die in den Ausgabepuffer geschrieben werden soll. Damit ein Stream betroffen wird, muss ein Puffer bestehen. Damit eine Positionierung erfolgreich ist, muss die resultierende Streamposition innerhalb der kontrollierten Sequenz liegen. Andernfalls (oder wenn keine Position betroffen ist) tritt bei der Positionierung ein Fehler ein.

basic_stringbuf::str

Legt den Text in einem Zeichenfolgenpuffer fest, ohne die Schreibposition zu ändern, oder ruft ihn ab.

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

Parameter

_Newstr
Die neue Zeichenfolge.

Rückgabewert

Gibt ein Objekt der Klasse basic_string<Elem, Tr, Alloc> , zurück, dessen kontrollierte Sequenz eine Kopie der sequenz gesteuert wird.*this

Hinweise

Die erste Memberfunktion gibt ein Objekt der Klasse basic_string<Elem, Tr, zurück, Alloc>dessen kontrollierte Sequenz eine Kopie der sequenz gesteuert wird.*this Die kopierte Sequenz ist vom Modus „stored stringbuf“ abhängig:

  • Wenn mode & ios_base::out ungleich null ist, und ein Ausgabepuffer besteht, ist die Sequenz der gesamte Ausgabepuffer ( epptr - pbase-Elemente, die mit pbase beginnen).

  • Wenn mode & ios_base::in ungleich null ist, und ein Eingabepuffer besteht, ist die Sequenz der gesamte Eingabepuffer ( egptr - back-Elemente, die mit eback beginnen).

  • Andernfalls ist die kopierte Sequenz leer.

Mit der zweiten Memberfunktion werden alle zurzeit gesteuerten Sequenzen verwechselt *this. Anschließend wird eine Kopie der durch _Newstr gesteuerten Sequenz zugewiesen. Wenn mode & ios_base::in ungleich null ist, wird festgelegt, dass der Eingabepuffer den Lesevorgang am Anfang der Sequenz beginnt. Wenn mode & ios_base::out ungleich null ist, wird festgelegt, dass der Ausgabepuffer den Schreibvorgang am Anfang der Sequenz beginnt.

Beispiel

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

Verknüpft einen Typnamen mit dem Vorlagenparameter Tr.

typedef Tr traits_type;

Hinweise

Der Typ stellt ein Synonym für den Vorlagenparameter Tr dar.

basic_stringbuf::underflow

Die geschützte virtuelle Funktion versucht, das aktuelle Element aus dem Eingabestream zu extrahieren.

virtual int_type underflow();

Rückgabewert

Wenn die Funktion nicht erfolgreich ist, wird traits_type::eof zurückgegeben. Andernfalls wird das aktuelle Element im Eingabedatenstrom zurückgegeben, das konvertiert wird.

Hinweise

Die geschützte virtuelle Memberfunktion versucht, das aktuelle Element byte aus dem Eingabepuffer zu extrahieren, die aktuelle Datenstromposition zu erhöhen und das Element als traits_type::to_int_type( Byte) zurückzugeben. Dies kann auf eine weise erfolgen: Wenn eine Leseposition verfügbar ist, wird es als element verwendet byte , das in der Leseposition gespeichert ist und den nächsten Zeiger für den Eingabepuffer fortschreitet.

basic_streambuf::swap

Vertauscht den Inhalt dieses Zeichenfolgenpuffers mit einem anderen Zeichenfolgenpuffer.

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

Parameter

sonstige
Der „basic_stringbuf“, dessen Inhalt mit diesem „basic_stringbuf“ getauscht wird.

Hinweise

basic_stringbuf::operator=

Weist den Inhalt von basic_stringbuf auf der rechten Seite des Operators dem basic_stringbuf auf der linken Seite zu.

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

Parameter

sonstige
Ein basic_stringbuf, dessen Inhalt, einschließlich Gebietsschema-Merkmalen, dem Stringbuf auf der linken Seite des Operators zugewiesen wird.

Hinweise

Siehe auch

Threadsicherheit in der C++-Standardbibliothek
iostream-Programmierung
iostreams-Konventionen