std::basic_ostringstream::basic_ostringstream(3) | C++ Standard Libary | std::basic_ostringstream::basic_ostringstream(3) |
NAME¶
std::basic_ostringstream::basic_ostringstream - std::basic_ostringstream::basic_ostringstream
Synopsis¶
basic_ostringstream() (1) (since
: basic_ostringstream(std::ios_base::out) { } C++11)
explicit basic_ostringstream( std::ios_base::openmode mode = (until
std::ios_base::out ); C++11)
explicit basic_ostringstream( std::ios_base::openmode mode ); (since
C++11)
explicit basic_ostringstream( const
std::basic_string<CharT,Traits,Allocator>& str, (3)
std::ios_base::openmode mode = std::ios_base::out );
basic_ostringstream( basic_ostringstream&& other ); (4) (since
C++11)
basic_ostringstream( std::ios_base::openmode mode, const (5) (since
Allocator& a ); C++20)
explicit basic_ostringstream( (since
std::basic_string<CharT,Traits,Allocator>&& str, (6)
C++20)
std::ios_base::openmode mode = std::ios_base::out );
template<class SAlloc>
basic_ostringstream( const (2) (since
std::basic_string<CharT,Traits,SAlloc>& str, (7) C++20)
const Allocator& a )
: basic_ostringstream(str, std::ios_base::out, a) { }
template<class SAlloc>
basic_ostringstream( const (8) (since
std::basic_string<CharT,Traits,SAlloc>& str, C++20)
std::ios_base::openmode mode, const Allocator& a );
template<class SAlloc>
explicit basic_ostringstream( const (9) (since
std::basic_string<CharT,Traits,SAlloc>& str, C++20)
std::ios_base::openmode mode = std::ios_base::out );
Constructs new string stream.
1) Default constructor. Constructs new underlying string device with the
default
open mode
2) Constructs new underlying string device. The underlying basic_stringbuf
object is
constructed as basic_stringbuf<Char,Traits,Allocator>(mode |
std::ios_base::out).
3) Uses a copy of str as initial contents of the underlying string device.
The
underlying basic_stringbuf object is constructed as
basic_stringbuf<Char,Traits,Allocator>(str, mode | std::ios_base::out).
4) Move constructor. Constructs the string stream with the state of other
using move
semantics.
5) Constructs new underlying string device. The underlying basic_stringbuf
object is
constructed as basic_stringbuf<Char,Traits,Allocator>(mode |
std::ios_base::out, a).
6) Move-construct the contents of the underlying string device with str. The
underlying basic_stringbuf object is constructed as
basic_stringbuf<Char,Traits,Allocator>(std::move(str), mode |
std::ios_base::out).
7) Constructs new underlying string device. The underlying basic_stringbuf
object is
constructed as basic_stringbuf<Char,Traits,Allocator>(str,
std::ios_base::out, a).
8) Constructs new underlying string device. The underlying basic_stringbuf
object is
constructed as basic_stringbuf<Char,Traits,Allocator>(str, mode |
std::ios_base::out, a).
9) Constructs new underlying string device. The underlying basic_stringbuf
object is
constructed as basic_stringbuf<Char,Traits,Allocator>(str, mode |
std::ios_base::out). This overload participates in overload resolution only
if
SAlloc and Allocator are not the same type.
Parameters¶
str - string to use as initial contents of the string stream
a - allocator used for allocating the contents of the string stream
specifies stream open mode. It is bitmask type, the following constants are
defined:
Constant Explanation
mode - 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
other - another string stream to use as source
Notes¶
Construction of one-off basic_ostringstream objects in a tight
loop, such as when
used for string conversion, may be significantly more costly than calling str
to
reuse the same object.
Example¶
// Run this code
#include <iostream>
#include <sstream>
int main()
{
// default constructor (input/output stream)
std::stringstream buf1;
buf1 << 7;
int n = 0;
buf1 >> n;
std::cout << "buf1 = " << buf1.str() << " n
= " << n << '\n';
// input stream
std::istringstream inbuf("-10");
inbuf >> n;
std::cout << "n = " << n << '\n';
// output stream in append mode (C++11)
std::ostringstream buf2("test", std::ios_base::ate);
buf2 << '1';
std::cout << buf2.str() << '\n';
}
Output:¶
buf1 = 7 n = 7
n = -10
test1
Defect reports
The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.
DR Applied to Behavior as published Correct behavior
P0935R0 C++11 default constructor was explicit made implicit
See also¶
str gets or sets the contents of underlying string device object
(public member function)
constructs a basic_stringbuf object
constructor (public member function of
std::basic_stringbuf<CharT,Traits,Allocator>)
2022.07.31 | http://cppreference.com |