Namespaces
Variants
Actions

std::strstreambuf::str

From cppreference.com
< cpp‎ | io‎ | strstreambuf
 
 
 
 
char* str();
(deprecated in C++98)
(removed in C++26)

Calls freeze(), then returns a copy of start pointer of the get area, std::streambuf::eback().

The start of the get area, for all writeable std::strstreambuf objects constructed through the interface provided by std::strstream, is also the start of the put area.

Contents

[edit]Parameters

(none)

[edit]Return value

A copy of eback(), which may be a null pointer.

[edit]Notes

This function is typically called through the std::strstream interface.

The call to freeze() guarantees that the returned pointer remains valid until the next explicit call to freeze(false): otherwise (on a dynamic buffer) any output operation could trigger buffer reallocation which would invalidate the pointer. It also causes a memory leak in the destructor of std::strstreambuf, unless freeze(false) is called before the buffer (or, more commonly, the std::strstream that manages it) is destroyed.

[edit]Example

#include <iostream>#include <strstream>   int main(){std::strstream dyn;// dynamically-allocated read/write buffer dyn <<"Test: "<<1.23<<std::ends;std::strstreambuf* buf = dyn.rdbuf();std::cout<<"R/W buffer holds ["<< buf->str()// or dyn.str()<<"]\n"; dyn.freeze(false);// after calling .str() on a dynamic strstream   char arr[10];std::ostrstream user(arr, 10);// fixed-size write-only buffer buf = user.rdbuf(); user <<1.23<<std::ends;std::cout<<"Write-only buffer holds ["<< buf->str()// or user.str()<<"]\n";   std::istrstream lit("1 2 3");// fixed-size read-only buffer buf = lit.rdbuf();std::cout<<"Read-only buffer holds ["<< buf->str()// or lit.str()<<"]\n";}

Output:

R/W buffer holds [Test: 1.23] Write-only buffer holds [1.23] Read-only buffer holds [1 2 31 2 3]

[edit]See also

accesses the output buffer
(public member function of std::strstream)[edit]
accesses the output buffer
(public member function of std::ostrstream)[edit]
accesses the output buffer
(public member function of std::istrstream)[edit]
close