std::basic_stringbuf<CharT,Traits,Allocator>:: str
(1) | ||
std::
basic_string
<
CharT, Traits, Allocator
>
str
(
)
const
;
|
(until C++20) | |
std::
basic_string
<
CharT, Traits, Allocator
>
str
(
)
const
&
;
|
(since C++20) | |
template
<
class
SAlloc
>
std:: basic_string < CharT, Traits, SAlloc > str ( const SAlloc & a ) const ; |
(2) | (since C++20) |
std::
basic_string
<
CharT, Traits, Allocator
>
str
(
)
&&
;
|
(3) | (since C++20) |
void
str
(
const
std::
basic_string
<
CharT, Traits, Allocator
>
&
s
)
;
|
(4) | |
template
<
class
SAlloc
>
void str ( const std:: basic_string < CharT, Traits, SAlloc > & s ) ; |
(5) | (since C++20) |
void
str
(
std::
basic_string
<
CharT, Traits, Allocator
>
&&
s
)
;
|
(6) | (since C++20) |
template
<
class
StringViewLike
>
void str ( const StringViewLike & t ) ; |
(7) | (since C++26) |
Gets and sets the underlying string.
In the descriptions below, buf and mode are exposition-only data members of * this .
std::basic_stringbuf
's underlying character sequence. For input-only streams, the returned string contains the characters from the range
[
eback()
,
egptr()
)
. For input/output or output-only streams, contains the characters from
pbase()
to the last character in the sequence regardless of
egptr()
and
epptr()
.
-
-
The member character sequence in a buffer open for writing can be over-allocated for efficiency purposes. In that case, only the
initialized characters
are returned: these characters are the ones that were obtained from the string argument of the constructor, the string argument of the most recent call to a setter overload of
str()
, or from a write operation. A typical implementation that uses over-allocation maintains a high-watermark pointer to track the end of the initialized part of the buffer and this overload returns the characters from pbase() to the high-watermark pointer.
-
The member character sequence in a buffer open for writing can be over-allocated for efficiency purposes. In that case, only the
initialized characters
are returned: these characters are the ones that were obtained from the string argument of the constructor, the string argument of the most recent call to a setter overload of
|
(since C++20) |
SAlloc
meets the requirements of
Allocator
.
init_buf_ptrs
()
, then returns the
std::basic_string
object.
Allocator
.
init_buf_ptrs
()
.
init_buf_ptrs
()
.
std:: basic_string_view < CharT, Traits >> is true .
Parameters
s | - | a std::basic_string object holding the replacement character sequence |
t | - | an object (convertible to std::basic_string_view ) holding the replacement character sequence |
a | - | allocator to use for all memory allocations of the returned std::basic_string |
Return value
Notes
This function is typically accessed through std::basic_istringstream::str() , std::basic_ostringstream::str() , or std::basic_stringstream::str() .
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_sstream_from_string_view
|
202306L | (C++26) | Interfacing string streams with std::string_view |
Example
#include <iostream> #include <sstream> int main() { int n; std::istringstream in; // could also use in("1 2") in.rdbuf()->str("1 2"); // set the get area in >> n; std::cout << "after reading the first int from \"1 2\", the int is " << n << ", str() = \"" << in.rdbuf()->str() << "\"\n"; // or in.str() std::ostringstream out("1 2"); out << 3; std::cout << "after writing the int '3' to output stream \"1 2\"" << ", str() = \"" << out.str() << "\"\n"; std::ostringstream ate("1 2", std::ios_base::ate); // C++11 ate << 3; std::cout << "after writing the int '3' to append stream \"1 2\"" << ", str() = \"" << ate.str() << "\"\n"; }
Output:
after reading the first int from "1 2", the int is 1, str() = "1 2" after writing the int '3' to output stream "1 2", str() = "3 2" after writing the int '3' to append stream "1 2", str() = "1 23"
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 432 | C++98 |
1. overload
(1)
did not specify the content
of the underlying character sequence 2. overload (4) did not specify how the input and output sequences are initialized |
both specified |
LWG 562 | C++98 |
overload
(4)
set
epptr()
to point one past the last underlying
character if bool ( mode & std:: ios_base :: out ) == true |
epptr()
can be set
beyond that position |
See also
gets or sets the contents of underlying string device object
(public member function of
std::basic_stringstream<CharT,Traits,Allocator>
)
|
|
(C++20)
|
obtains a view over the underlying character sequence
(public member function) |