public member function
<sstream>

std::basic_stringstream::basic_stringstream

default (1)
explicit basic_stringstream (
    ios_base::openmode which = ios_base::in | ios_base::out);
initialization (2)
explicit basic_stringstream (
    const basic_string<char_type,traits_type,allocator_type>& str,
    ios_base::openmode which = ios_base::in | ios_base::out);
default (1)
explicit basic_stringstream (
    ios_base::openmode which = ios_base::in | ios_base::out);
initialization (2)
explicit basic_stringstream (
    const basic_string<char_type,traits_type,allocator_type>& str,
    ios_base::openmode which = ios_base::in | ios_base::out);
copy (3)
basic_stringstream (const basic_stringstream&) = delete;
move (4)
basic_stringstream (basic_stringstream&& x);
Construct object
Constructs a basic_stringstream object:

(1) empty constructor (default constructor)
Constructs a basic_stringstream object with an empty sequence as content.
Internally, its basic_iostream base constructor is passed a pointer to a basic_stringbuf object constructed with which as argument.
(2) initialization constructor
Constructs a basic_stringstream object with a copy of str as content.
Internally, its basic_iostream base constructor is passed a pointer to a basic_stringbuf object constructed with str and which as arguments.
(3) copy constructor (deleted)
Deleted (no copy constructor).
(4) move constructor
Acquires the contents of x.
First, the function move-constructs both its base basic_iostream class from x and a basic_stringbuf object from x's internal basic_streambuf object, and then associates them by calling member set_rdbuf.
x is left in an unspecified but valid state.
It is unspecified whether the sequence controlled by the internal basic_stringbuf object is the one in x before the call, or a copy of it. In any case, both objects have internal string buffers that use independent sequences after the call.
The internal basic_stringbuf object has at least the same duration as the basic_stringstream object.

Parameters

str
A basic_string object with the same template parameters (charT, traits and Alloc), whose content is copied.
x
A basic_stringstream object of the same type (with the same class template parameters charT, traits and Alloc), whose value is moved.
which
Open mode: Access given by the internal basic_stringbuf object to its internal sequence of characters. It is an object of member type openmode for which any combination of the following member values is significant:
member constantstands foraccess
ios_base::ininputThe sequence supports input operations.
ios_base::outoutputThe sequence supports output operations.
Other values of type ios_base::openmode may also be specified, although whether they have an effect on basic_stringstream objects depends on the library implementation.
member constantstands foraccess
ios_base::ininputThe sequence supports input operations.
ios_base::outoutputThe sequence supports output operations.
ios_base::ateat endThe writing position is at the end after construction, and after every time the content is reset with member str.
Other values of type ios_base::openmode (such as ios_base::app) may also be specified, although whether they have an effect on basic_stringstream objects depends on the library implementation.

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// swapping ostringstream objects
#include <string>       // std::string
#include <iostream>     // std::cout
#include <sstream>      // std::stringstream

int main () {

  std::stringstream ss;

  ss << 100 << ' ' << 200;

  int foo,bar;
  ss >> foo >> bar;

  std::cout << "foo: " << foo << '\n';
  std::cout << "bar: " << bar << '\n';

  return 0;
}


Output:
foo: 100
bar: 200

Data races

The move constructor (4) modifies x.

Exception safety

Strong guarantee: if an exception is thrown, there are no side effects.

See also