| (1) | |||
| (2) |
Constructs new input/output strstream and its underlying std::strstreambuf
.
1) Default-constructs the underlying
std::strstreambuf
, which creates a dynamically growing buffer, and initializes the base class with the address of the strstreambuf member. 2) Initialized the base class with the address of the underlying
std::strstreambuf
member, which is initialized in one of the two possible ways, both of which use a user-provided fixed-size array: a) if the
app
bit is not set in mode
, constructs the buffer by calling strstreambuf(s, n, s)
. The behavior is undefined if there are less than n
elements in the array whose first element is pointed to by s
b) if the
app
bit is set in mode
, constructs the buffer by calling strstreambuf(s, n, s + std::strlen(s))
. The behavior is undefined if there are less than n
elements in the array whose first element is pointed to by s
or if the array does not contain a valid null-terminated character sequence.Parameters
s | - | char array to use as the output buffer | ||||||||||||||
n | - | size of the array to be used for output | ||||||||||||||
mode | - | specifies stream open mode. It is a bitmask type, the following constants are defined (although only app is used):
|
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <iostream> #include <strstream> #include <string> int main() { // dynamic buffer std::strstream s1; // dynamic buffer s1 << 1 << ' ' << 3.14 << " example" << std::ends; std::cout << "buffer holds '" << s1.str() << "'\n" ; s1.freeze( false ); int n; double d; std::string w; s1 >> n >> d >> w; std::cout << "Read back: n = " << n << " d = " << d << " w = '" << w << "'\n" ; // static buffer char arr[20] = "-1 -3.14 " ; std::strstream s2(arr, sizeof arr, std::ios_base::app); s2 << "another" << std::ends; std::cout << "buffer holds: '" << s2.str() << "'\n" ; s2 >> n >> d >> w; std::cout << "Read back: n = " << n << " d = " << d << " w = '" << w << "'\n" ; } |
Output:
1 2 3 4 | buffer holds '1 3.14 example' Read back: n = 1 d = 3.14 w = 'example' buffer holds: '-1 -3.14 another' Read back: n = -1 d = -3.14 w = 'another' |
See also
constructs a strstreambuf object (public member function of std::strstreambuf ) | |
constructs an strstream, optionally allocating the buffer (public member function of std::istrstream ) | |
constructs an strstream, optionally allocating the buffer (public member function of std::ostrstream ) |
Please login to continue.