table of contents
std::strstreambuf::str(3) | C++ Standard Libary | std::strstreambuf::str(3) |
NAME¶
std::strstreambuf::str - std::strstreambuf::str
Synopsis¶
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.
Parameters¶
(none)
Return value¶
A copy of eback(), which may be a null pointer.
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.
Example¶
// Run this code
#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]
See also¶
str accesses the output buffer
(public member function of std::strstream)
str accesses the output buffer
(public member function of std::ostrstream)
str accesses the output buffer
(public member function of std::istrstream)
2024.06.10 | http://cppreference.com |