std::basic_...stringstream(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸŽ€ std::basic_...stringstream(3) β€” C++ Standard Libary, section 3 πŸŽ€

okay bestie, this is the C++ Standard Libary manual page for std::basic_ostringstream::basic_ostringstream, and we're gonna make it make sense. no cap. πŸ’…

πŸ’– NAME πŸ’–

std::basic_ostringstream::basic_ostringstream β€” std::basic_ostringstream::basic_ostringstream

✨ Synopsis ✨

explicit basic_ostringstream( std::ios_base::openmode mode =
     (until C++11)
                              std::ios_base::out );
explicit basic_ostringstream( std::ios_base::openmode mode );
(1) (since C++11)
basic_ostringstream()                                             (2)
(since C++11)
    : basic_ostringstream(std::ios_base::out) {}
explicit basic_ostringstream

    ( const std::basic_string<CharT, Traits, Allocator>& str,     (3)
      std::ios_base::openmode mode =

          std::ios_base::out );
explicit basic_ostringstream

    ( std::basic_string<CharT, Traits, Allocator>&& str,          (4)
(since C++20)
      std::ios_base::openmode mode =

          std::ios_base::out );
basic_ostringstream( std::ios_base::openmode mode, const          (5)
(since C++20)
Allocator& a );
template< class SAlloc >

basic_ostringstream( const std::basic_string<CharT, Traits,
SAlloc>& str,                                                     (6)
(since C++20)

                     std::ios_base::openmode mode, const
Allocator& a );
template< class SAlloc >

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

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

explicit basic_ostringstream
    ( const std::basic_string<CharT, Traits, SAlloc>& str,        (8)
(since C++20)
      std::ios_base::openmode mode =

          std::ios_base::out );
template< class StringViewLike >

explicit basic_ostringstream
    ( const StringViewLike& t,                                    (9)
(since C++26)
      std::ios_base::openmode mode =

          std::ios_base::out );
template< class StringViewLike >

basic_ostringstream( const StringViewLike& t,
(10) (since C++26)

                     std::ios_base::openmode mode, const
Allocator& a );
template< class StringViewLike >
basic_ostringstream( const StringViewLike& t, const
(11) (since C++26)
Allocator& a );
basic_ostringstream( basic_ostringstream&& other );
(12) (since C++11)

Constructs new string stream.

Given

  • base_type as std::basic_ostream<CharT, Traits>, and
  • buf_type as std::basic_stringbuf<CharT, Traits, Allocator>,

the std::basic_ostream base and the exposition-only data member sb are initialized as follows.

  • (1) β€” base: (empty); sb: buf_type(mode | std::ios_base::out)
  • (2) β€” base: (empty); sb: buf_type(std::ios_base::out)
  • (3) β€” base: (empty); sb: buf_type(str, mode | std::ios_base::out)
  • (4) β€” base: (empty); sb: buf_type(std::move(str), mode | std::ios_base::out)
  • (5) β€” base: base_type(std::addressof(sb))^[1]; sb: buf_type(mode | std::ios_base::out, a)
  • (6) β€” base: (empty); sb: buf_type(str, mode | std::ios_base::out, a)
  • (7) β€” base: (empty); sb: buf_type(str, std::ios_base::out, a)
  • (8) β€” base: (empty); sb: buf_type(str, mode | std::ios_base::out)
  • (9) β€” base: std::addressof(sb); sb: {t, mode | std::ios_base::out, Allocator()}
  • (10) β€” base: (empty); sb: {t, mode | std::ios_base::out, a}
  • (11) β€” base: (empty); sb: {t, std::ios_base::out, a}
  • (12) β€” base: move constructed from other's std::basic_ostream base; sb: move constructed from other.sb
  1. ↑ The std::basic_iostream base was intialized with base_type(&sb) (for overloads (1,3)) until C++11.
  • 8) This overload participates in overload resolution only if std::is_same_v<SAlloc, Allocator> is false.
  • 9-11) These overloads participate in overload resolution only if std::is_convertible_v<const StringViewLike&, std::basic_string_view<CharT, Traits>> is true.

🌸 Parameters 🌸

  • str β€” string to use as initial contents of the string stream
  • t β€” an object (convertible to std::basic_string_view) to use as initial contents of the string stream
  • a β€” allocator used for allocating the contents of the string stream
  • mode β€” specifies stream open mode. It is a BitmaskType, the following constants are defined:
    • 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
  • 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.

Feature-test macro:

  • __cpp_lib_sstream_from_string_view β€” value 202306L; Std (C++26); feature: Interfacing std::stringstreams with std::string_view, (9-11)

πŸ’œ 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.

  • P0935R0 β€” Applied to: C++11; Behavior as published: the default constructor was explicit; Correct behavior: made implicit

🌈 See also 🌈

  • str β€” gets or sets the contents of underlying string device object (public member function)
  • constructor β€” constructs a basic_stringbuf object (public member function of std::basic_stringbuf<CharT,Traits,Allocator>)

mwah πŸ’‹ this page came from http://cppreference.com, version 2024.06.10, and it’s std::basic_...stringstream(3) β€” now go slay those streams, bestie 🫢✨

πŸ“¦ where this page comes from