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<Tr
Elem
speichert> Alloc
eine 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_filebuf des Bereichs gleichbedeutend mit dem Typ desselben Namens im Tr-Bereich . |
off_type | Macht diesen Typ innerhalb basic_filebuf des Bereichs gleichbedeutend mit dem Typ desselben Namens im Tr-Bereich . |
pos_type | Macht diesen Typ innerhalb basic_filebuf des 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::beg
die neue Position der Anfang des Datenstroms plus _Off.Ist
_Way
==ios_base::cur
die neue Position die aktuelle Datenstromposition plus _Off.Ist
_Way
==ios_base::end
die 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