Objects of the strstreambuf class can be constructed and destructed.
public:~strstreambuf()
This is supported on

If freeze() has not been called for the strstreambuf object and a stream buffer is associated with the strstreambuf object, the strstreambuf destructor frees the space allocated by the strstreambuf constructor. The effect of the destructor depends on the constructor used to create the strstreambuf object:
public:strstreambuf(long)
This is supported on

This constructor takes one argument and constructs an empty strstreambuf object in dynamic mode. The initial size of the stream buffer will be at least as long as the argument in bytes.
This constructor is available for 64-bit applications. It accepts a long argument.
public:strstreambuf(int)
This is supported on

This constructor takes one argument and constructs an empty strstreambuf object in dynamic mode. The initial size of the stream buffer will be at least as long as the argument in bytes.
This constructor is available for 32-bit applications. It accepts an int argument.
public:strstreambuf(char* b, int size, char* pstart = 0)
This is supported on

Constructs a strstreambuf object with a stream buffer that begins at the position pointed to by b. The nature of the stream buffer depends on the value of size.
Regardless of the values of size, if the value of pstart is 0, the get area will include the entire stream buffer, and insertions will caues errors.
This constructor is available for 32-bit applications. The second argument is an int value.
public:strstreambuf( unsigned char* b,
int size,
unsigned char* pstart = 0 )
This is supported on

Constructs a strstreambuf object with a stream buffer that begins at the position pointed to by b. The nature of the stream buffer depends on the value of size.
Regardless of the values of size, if the value of pstart is 0, the get area will include the entire stream buffer, and insertions will caues errors.
This constructor is available for 32-bit applications. The second argument is an int value.
public:strstreambuf( unsigned char* b,
long size,
unsigned char* pstart = 0 )
This is supported on

Constructs a strstreambuf object with a stream buffer that begins at the position pointed to by b. The nature of the stream buffer depends on the value of size.
Regardless of the values of size, if the value of pstart is 0, the get area will include the entire stream buffer, and insertions will caues errors.
This constructor is available for 64-bit applications. The second argument is a long value.
public:strstreambuf( void * ( * a ) ( long ),
void ( * f ) ( void * ) )
This is supported on

This constructor takes two arguments and creates an empty strstreambuf object in dynamic mode. a is a pointer to the function that is used to allocate space. a is passed a long value that equals the number of bytes that it is supposed to allocate. If the value of a is 0, the operator new is used to allocate space. f is a pointer to the function that is used to free space. f is passed an argument that is a pointer to the array of bytes that a allocated. If f has a value of 0, the operator delete is used to free space.
public:strstreambuf( signed char* b,
int size,
signed char* pstart = 0 )
This is supported on

Constructs a strstreambuf object with a stream buffer that begins at the position pointed to by b. The nature of the stream buffer depends on the value of size.
Regardless of the values of size, if the value of pstart is 0, the get area will include the entire stream buffer, and insertions will caues errors.
This constructor is available for 32-bit applications. The second argument is an int value.
public:strstreambuf( signed char* b,
long size,
signed char* pstart = 0 )
This is supported on

Constructs a strstreambuf object with a stream buffer that begins at the position pointed to by b. The nature of the stream buffer depends on the value of size.
Regardless of the values of size, if the value of pstart is 0, the get area will include the entire stream buffer, and insertions will caues errors.
This constructor is available for 64-bit applications. The second argument is a long value.
public:strstreambuf(char* b, long size, char* pstart = 0)
This is supported on

Constructs a strstreambuf object with a stream buffer that begins at the position pointed to by b. The nature of the stream buffer depends on the value of size.
Regardless of the values of size, if the value of pstart is 0, the get area will include the entire stream buffer, and insertions will caues errors.
This constructor is available for 64-bit applications. The second argument is a long value.
public:strstreambuf()
This is supported on

This constructor takes no arguments and constructs an empty strstreambuf object in dynamic mode. Space will be allocated automatically to accommodate the characters that are put into the strstreambuf objet. This space will be allocated using the operator new and deallocated using the operator delete. The characters that are already stored by the strstreambuf object may have to be copied when new space is allocated. If you know you are going to insert many characters into an strstreambuf object, you can give the I/O Stream Library an estimate of the size of the object before you create it by calling strstreambuf::setbuf().
public:virtual streampos seekoff(streamoff, ios::seek_dir, int)
This is supported on

Repositions the get or put pointer in the array of bytes in memory that serves as the ultimate producer or consumer.
If you constructed the strstreambuf in dynamic mode, the results of seekoff() are unpredictable. Therefore, do not use seekoff() with an strstreambuf object that you created in dynamic mode.
If you did not construct the strstreambuf object in dynamic mode, seekoff() attempts to reposition the get pointer or the put pointer, depending on the value of the third argument, the mode. If ios::in is set, seekoff() repositions the get pointer. If ios::out is set, seekoff() repositions the put pointer. If both ios::in and ios::out are set, seekoff() repositions both pointers.
seekoff() attempts to reposition the affected pointer to the value of ios::seek_dir + streamoff. ios::seek_dir can have the following values: ios::beg, ios::cur, or ios::end.
If the value of ios::seek_dir + streamoff is equal to or greater than the end of the array, the value is not valid and seekoff() returns EOF. Otherwise, seekoff() sets the affected pointer to this value and returns this value.
public:virtual int overflow(int)
This is supported on

Causes the ultimate consumer to consume the characters in the put area and calls setp() to establish a new put area. The argument is stored in the new put area if its value is not equal to EOF.
This function is internal and should not be used.
public:long pcount()
This is supported on

This function returns a long for 64-bit applications. It is not available for 32-bit applications.
public:int pcount()
This is supported on

This function returns an int for 32-bit applications. It is not available for 64-bit applications.
public:virtual int underflow()
This is supported on

If the get area is not empty, underflow() returns the first character in the get area. If the get area is empty, underflow() creates a new get area that is not empty and returns the first character. If no more characters are available in the ultimate producer, underflow() returns EOF and leaves the get area empty.
public:virtual int doallocate()
This is supported on

Attempts to allocate space for a stream buffer. If you created the strstreambuf object using the constructor that takes two pointers to functions as arguments, doallocate() allocates space for the stream buffer by calling the function pointed to by the first argument to the constructor. Otherwise, doallocate() calls the operator new to allocate space for the stream buffer.
public:void freeze(int n = 1)
This is supported on

Controls whether the array that makes up a stream buffer can be deleted automatically. If n has a nonzero value, the array is not deleted automatically. If n equals 0, the array is deleted automatically when more space is needed or when the strstreambuf object is deleted. If you call freeze() with a nonzero argument for a strstreambuf object that was allocated in dynamic mode, any attempts to put characters in the stream buffer may result in errors. Therefore, you should avoid insertions to such stream buffers because the results are unpredictable. However, if you have a "frozen" stream buffer and you call freeze() with an argument equal to 0, you can put characters in the stream buffer again.
Only space that is acquired through dynamic allocation is ever freed.
public:int isfrozen()
This is supported on

Returns true if the stream buffer is frozen.
public:virtual streambuf* setbuf(char* p, long l)
This is supported on

setbuf() records the buffer size. The next time that the strstreambuf object dynamically allocates a stream buffer, the stream buffer is at least l bytes long.
Note: If you call setbuf() for an strstreambuf object, you must call it with the first argument equal to 0.
This function is available for 64-bit applications. The second argument is a long value.
public:virtual streambuf* setbuf(char* p, int l)
This is supported on

setbuf() records the buffer size. The next time that the strstreambuf object dynamically allocates a stream buffer, the stream buffer is at least l bytes long.
Note: If you call setbuf() for an strstreambuf object, you must call it with the first argument equal to 0.
This function is available for 32-bit applications. The second argument is an int value.
public:char* str()
This is supported on

Returns a pointer to the first character in the stream buffer and calls freeze() with a nonzero argument. Any attempts to put characters in the stream buffer may result in errors. If the strstreambuf object was created with an explicit array (that is, the strstreambuf constructor with three arguments was used), str() returns a pointer to that array. If the strstreambuf object was created in dynamic mode and nothing is stored in the array, str() may return 0.