Freigeben über


strstreambuf::strstreambuf

Konstruiert ein Objekt vom Typ strstreambuf.

explicit strstreambuf( 
   streamsize _Count = 0 
); 
strstreambuf( 
   void ( *_Allocfunc )( size_t ), 
   void ( *_Freefunc )( void * ) 
); 
strstreambuf( 
   char *_Getptr,  
   streamsize _Count, 
   char *_Putptr = 0 
); 
strstreambuf( 
   signed char *_Getptr,  
   streamsize _Count, 
   signed char *_Putptr = 0 
); 
strstreambuf( 
   unsigned char *_Getptr, 
   streamsize _Count, 
   unsigned char *_Putptr = 0 
); 
strstreambuf( 
   const char *_Getptr,  
   streamsize _Count 
); 
strstreambuf( 
   const signed char *_Getptr,  
   streamsize _Count 
); 
strstreambuf( 
   const unsigned char *_Getptr,  
   streamsize _Count 
);

Parameter

  • _Allocfunc
    Die Funktion verwendet, um Buffer zuzuordnen.

  • _Count
    Bestimmt die Länge des Puffers, auf den durch _Getptr gezeigt wird. Wenn _Getptr kein Argument (first Konstruktorformular), eine vorgeschlagene Zuweisungsgröße für die Puffer.

  • _Freefunc
    Die Funktion verwendet, um Buffer freizugeben.

  • _Getptr
    Ein Puffer verwendet für Eingaben.

  • _Putptr
    Ein Puffer verwendet für die Ausgabe.

Hinweise

Der erste Konstruktor speichert einen NULL-Zeiger in allen Zeigern, die den Eingabepuffer, den strstreambuf Ausgabepuffer und Zuordnung steuern. Es legt den gespeicherten strstreambuf Modus fest, um die Sequenz und ausdehnbar gesteuerte änderbar zu machen. Sie akzeptiert auch _Count wie eine vorgeschlagene ursprüngliche Zuweisungsgröße.

Der zweite Konstruktor verhält sich wie dem ersten, es werden _Allocfunc als Zeiger, um die Funktion aufzurufen, um Speicher und _Freefunc als Zeiger der Funktion Aufruf zugeordnet, um diesem Speicher freizugeben.

Die drei Konstruktoren:

strstreambuf(char *_Getptr, streamsize count,
    char *putptr = 0);
strstreambuf(signed char *_Getptr, streamsize count,
    signed char *putptr = 0);
strstreambuf(unsigned char *_Getptr, streamsize count,
    unsigned char *putptr = 0);

Sie verhalten sich auch wie das erste, dass _Getptr legt das Objekt fest, das verwendet wird, um die gesteuerte Sequenz enthält. (Daher, darf es kein NULL-Zeiger sein.) Die Anzahl der Elemente im Array N wird bestimmt, wie folgt:

  • Wenn (_Count > 0), dann Ncount ist.

  • Wenn == (_Count 0), dann ist nstrlen(const (char *)_Getptr ).

  • Wenn (_Count < 0), dann NINT_MAX ist.

Wenn _Putptr ein NULL-Zeiger ist, richtet die Funktion nur einen Eingabepuffer ein, indem sie ausgeführt wird:

setg(_Getptr, _Getptr, _Getptr + N);

Andernfalls wird sie eingegeben und Ausgabepuffer ein, indem sie ausgeführt werden:

setg(_Getptr, _Getptr, _Putptr);
setp(_Putptr, _Getptr + N);

In diesem Fall muss _Putptr im Intervall [_Getptr, _Getptr + N] sein.

Schließlich die drei Konstruktoren:

strstreambuf(const char *_Getptr, streamsize _Count);
strstreambuf(const signed char *_Getptr, streamsize _Count);
strstreambuf(const unsigned char *_Getptr, streamsize _Count);

alle verhalten sich jedoch identisch:

streambuf( (char *)_Getptr, _Count );

außer dass der gespeicherte Modus macht die gesteuerte Sequenz weder noch änderbar ausdehnbar.

Anforderungen

Header: <strstream>

Namespace: std

Siehe auch

Referenz

strstreambuf-Klasse

iostream-Programmierung

iostreams-Konventionen