std::basic_stringbuf::str
std::basic_stringbuf::str
std::basic_string | (1) | |
---|---|---|
void str( const std::basic_string<CharT, Traits, Allocator>& s | (2) | |
Gets and sets the underlying string.
1) Creates and returns a std::basic_string
object containing a copy 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 the second overload of str(), or from an 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 | (since C++11) |
---|
2) Deletes
the entire underlying character s
equence of this
std::basic_stringbuf
and then configures
a new underlying character s
equence containing a copy of the contents
of s
. The pointers
of std::basic_streambuf
are initialized as
follows
:
- For input
s
treams
(mode & ios_base::in == true
),eback()
points
at the firs
t character,gptr() == eback()
, andegptr() == eback() + s.size()
: thes
ubs
equent input will read the firs
t character copied froms
.
Parameters
s | - | a string object holding the replacement character sequence |
---|
Return value
1) A string object holding a copy of this buffer's underlying character sequence.
2) (none)
Notes
This function is typically accessed through std::basic_stringstream::str()
.
Example
#include <sstream>
#include <iostream>
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"
See also
str | gets or sets the contents of underlying string device object (public member function of std::basic_stringstream) |
---|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.