table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::basic_stringbuf::str(3) | C++ Standard Libary | std::basic_stringbuf::str(3) | 
NAME¶
std::basic_stringbuf::str - std::basic_stringbuf::str
Synopsis¶
 std::basic_string<CharT, Traits, Allocator> str() const;
    (until C++20)
  
   std::basic_string<CharT, Traits, Allocator> str() const&; (since
    C++20)
  
   template<class SAlloc>
  
   std::basic_string<CharT, Traits, SAlloc> str( const SAlloc& a
    (2) (since C++20)
  
   ) const;
  
   std::basic_string<CharT, Traits, Allocator> str() &&;
    (3) (since C++20)
  
   void str( const std::basic_string<CharT, Traits, Allocator>& s
    (1) (4)
  
   );
  
   template<class SAlloc> (5) (since C++20)
  
   void str( const std::basic_string<CharT, Traits, SAlloc>& s );
  
   void str( std::basic_string<CharT, Traits, Allocator>&& s );
    (6) (since C++20)
  
   template< class StringViewLike > (7) (since C++26)
  
   void str( const StringViewLike& t );
  
   Gets and sets the underlying string.
  
   In the descriptions below, buf and mode are exposition-only data members of
    *this.
  
   1) Creates and returns a std::basic_string object containing a copy of this
  
   std::basic_stringbuf's underlying character sequence. For input-only streams,
    the
  
   returned string contains the characters from the range [eback(), egptr()).
    For
  
   input/output or output-only streams, contains the characters from pbase() to
    the
  
   last character in the sequence regardless of egptr() and epptr().
  
   The member character sequence in a buffer open for writing can be
    over-allocated for
  
   efficiency purposes. In that case, only the initialized characters are
    returned:
  
   these characters are the ones that were obtained from the string argument of
    the
  
   constructor, the string argument of the most recent call to a setter overload
    of
  
   str(), or from a write operation. A typical implementation that uses
    over-allocation
  
   maintains a high-watermark pointer to track the end of the initialized part
    of the
  
   buffer and this overload returns the characters from pbase() to the
    high-watermark
  
   pointer.
  
   Equivalent to return std::basic_string<CharT, Traits, (since C++20)
  
   Allocator>(view(), get_allocator());.
  
   2) Same as (1), except that a is used to construct the returned
    std::basic_string.
  
   Equivalent to return std::basic_string<CharT, Traits, SAlloc>(view(),
    a);.
  
   This overload participates in overload resolution only if SAlloc meets the
  
   requirements of Allocator.
  
   3) Creates a std::basic_string object as if by move constructing it from
    *this's
  
   underlying character sequence in buf. buf may need to be adjusted to contain
    the
  
   same content as in (1) at first. After that, sets buf to empty and
    calls
  
   init_buf_ptrs(), then returns the std::basic_string object.
  
   4) Replaces the underlying character sequence as if by buf = s, then calls
  
   init_buf_ptrs().
  
   5) Same as (4), except the type of s's allocator is not Allocator.
  
   This overload participates in overload resolution only if
    std::is_same_v<SAlloc,
  
   Allocator> is false.
  
   6) Replaces the underlying character sequence as if by buf = std::move(s),
    then
  
   calls init_buf_ptrs().
  
   7) Implicitly converts t to a string view sv as if by
    std::basic_string_view<CharT,
  
   Traits> sv = t;, then replaces the underlying character sequence as if by
    buf = sv,
  
   then calls init_buf_ptrs().
  
   This overload participates in overload resolution only if
  
   std::is_convertible_v<const StringViewLike&,
  
   std::basic_string_view<CharT, Traits>> is true.
Parameters¶
 s - a std::basic_string object holding the replacement character
    sequence
  
   t - an object (convertible to std::basic_string_view) holding the replacement
  
   character sequence
  
   a - allocator to use for all memory allocations of the returned
    std::basic_string
Return value¶
 1-3) A std::basic_string object holding this buffer's underlying
    character sequence.
  
   4-7) (none)
Notes¶
 This function is typically accessed through
    std::basic_istringstream::str(),
  
   std::basic_ostringstream::str(), or std::basic_stringstream::str().
  
   Feature-test macro Value Std Feature
  
   __cpp_lib_sstream_from_string_view 202306L (C++26) Interfacing string streams
    with
  
   std::string_view
Example¶
// Run this code
  
   #include <iostream>
  
   #include <sstream>
  
   int main()
  
   {
  
   int n;
  
   std::istringstream in; // could also use in("1 2")
  
   in.rdbuf()->str("1 2"); // set the get area
  
   in >> n;
  
   std::cout << "after reading the first int from \"1 2\",
    the int is "
  
   << n << ", str() = \"" <<
    in.rdbuf()->str() << "\"\n"; // or in.str()
  
   std::ostringstream out("1 2");
  
   out << 3;
  
   std::cout << "after writing the int '3' to output stream \"1
    2\""
  
   << ", str() = \"" << out.str() <<
    "\"\n";
  
   std::ostringstream ate("1 2", std::ios_base::ate); // C++11
  
   ate << 3;
  
   std::cout << "after writing the int '3' to append stream \"1
    2\""
  
   << ", str() = \"" << ate.str() <<
    "\"\n";
  
   }
Output:¶
 after reading the first int from "1 2", the int is 1,
    str() = "1 2"
  
   after writing the int '3' to output stream "1 2", str() = "3
    2"
  
   after writing the int '3' to append stream "1 2", str() = "1
    23"
  
   Defect reports
  
   The following behavior-changing defect reports were applied retroactively to
  
   previously published C++ standards.
  
   DR Applied to Behavior as published Correct behavior
  
   1. overload (1) did not specify the content
  
   LWG 432 C++98 of the underlying character sequence both specified
  
   2. overload (4) did not specify how the
  
   input and output sequences are initialized
  
   overload (4) set epptr() to point one past
  
   LWG 562 C++98 the last underlying epptr() can be set
  
   character if bool(mode & std::ios_base::out) beyond that position
  
   == true
See also¶
 gets or sets the contents of underlying string device object
  
   str (public member function of
    std::basic_stringstream<CharT,Traits,Allocator>)
  
   view obtains a view over the underlying character sequence
  
   (C++20) (public member function)
| 2024.06.10 | http://cppreference.com |