std::ostrstream::ostrstream
From cppreference.com
< cpp | io | ostrstream
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Input/output library
Print functions (C++23)
Buffers
(C++23)
(C++98/26*)
(C++20)
Streams
Abstractions
File I/O
String I/O
Array I/O
(C++23)
(C++23)
(C++23)
(C++98/26*)
(C++98/26*)
(C++98/26*)
Synchronized Output
(C++20)
Types
Error category interface
(C++11)
(C++11)
std::ostrstream
Member functions
ostrstream::ostrstream
ostrstream();
(1)
(deprecated in C++98) (removed in C++26)
ostrstream( char* s, int n, std::ios_base::openmode mode = std::ios_base::out );
(2)
(deprecated in C++98) (removed in C++26)
Constructs new 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 write to 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 sb) 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.[edit] Parameters
s
-
char array to use as the output buffer
n
-
size of the array to be used as the output buffer
mode
-
specifies stream open mode. It is a bitmask type, the following constants are defined (although only
app
is used):
Constant
Explanation
app
seek to the end of stream before each write
binary
open in binary mode
in
open for reading
out
open for writing
trunc
discard the contents of the stream when opening
ate
seek to the end of stream immediately after open
noreplace (C++23)
open in exclusive mode
[edit] Example
Run this code
#include <iostream> #include <strstream> int main() { std::ostrstream s1; // dynamic buffer s1 << 1 << ' ' << 3.14 << " example\n" << std::ends ; std::cout << s1.str(); s1.freeze(false); char arr[15] = "Hello"; std::ostrstream s2(arr, sizeof arr, std::ios_base::app ); s2 << ", world!" << std::ends ; std::cout << s2.str() << '\n'; std::cout << arr << '\n'; // streams use the provided arrays }
Output:
1 3.14 example Hello, world! Hello, world!
[edit] See also
constructs an
(public member function of
istrstream
object, optionally allocating the buffer (public member function of
std::istrstream
) [edit]
constructs a
(public member function of
strstream
object, optionally allocating the buffer (public member function of
std::strstream
) [edit]