Scroll to navigation

std::basic_stringstream::basic_stringstream(3) C++ Standard Libary std::basic_stringstream::basic_stringstream(3)

NAME

std::basic_stringstream::basic_stringstream - std::basic_stringstream::basic_stringstream

Synopsis


basic_stringstream() (1) (since
: basic_stringstream(std::ios_base::in | std::ios_base::out) { } C++11)
explicit basic_stringstream( std::ios_base::openmode mode = (until
std::ios_base::in | std::ios_base::out ); C++11)
explicit basic_stringstream( std::ios_base::openmode mode ); (since
C++11)
explicit basic_stringstream( const
std::basic_string<CharT,Traits,Allocator>& str, (3)
std::ios_base::openmode mode = std::ios_base::in |
std::ios_base::out );
basic_stringstream( basic_stringstream&& other ); (4) (since
C++11)
basic_stringstream( std::ios_base::openmode mode, const (5) (since
Allocator& a ); C++20)
explicit basic_stringstream(
std::basic_string<CharT,Traits,Allocator>&& str, (6) (since
std::ios_base::openmode mode = std::ios_base::in | C++20)
std::ios_base::out );
template<class SAlloc>


basic_stringstream( const (2)
std::basic_string<CharT,Traits,SAlloc>& str, (7) (since
const Allocator& a ) C++20)


: basic_stringstream(str, std::ios_base::in |
std::ios_base::out, a) { }
template<class SAlloc>


basic_stringstream( 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_stringstream( const (since
std::basic_string<CharT,Traits,SAlloc>& str, (9) C++20)


std::ios_base::openmode mode = std::ios_base::in |
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).
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).
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, 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).
7) Constructs new underlying string device. The underlying basic_stringbuf object is
constructed as basic_stringbuf<Char,Traits,Allocator>(str, std::ios_base::in |
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, a).
9) Constructs new underlying string device. The underlying basic_stringbuf object is
constructed as basic_stringbuf<Char,Traits,Allocator>(str, mode). 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_stringstream 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