- Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::strstream::strstream(3) | C++ Standard Libary | std::strstream::strstream(3) | 
NAME¶
std::strstream::strstream - std::strstream::strstream
Synopsis¶
 strstream(); (1) (deprecated in C++98)
  
   (removed in C++26)
  
   strstream( char* s, int n, std::ios_base::openmode mode = (deprecated in
    C++98)
  
   std::ios_base::in | (2) (removed in C++26)
  
   std::ios_base::out );
  
   Constructs new input/output strstream and its underlying
  std::strstreambuf.
  
   1) Default-constructs the underlying std::strstreambuf, which creates a
    dynamically
  
   growing buffer, and initializes the base class with the address of the
    strstreambuf
  
   member.
  
   2) Initialized the base class with the address of the underlying
    std::strstreambuf
  
   member, which is initialized in one of the two possible ways, both of which
    use a
  
   user-provided fixed-size array:
  
   a) if (mode & app) == 0 (the app bit is not set in mode), constructs the
    buffer by
  
   calling strstreambuf(s, n, s). The behavior is undefined if there are less
    than n
  
   elements in the array whose first element is pointed to by s.
  
   b) if (mode & app) != 0 (the app bit is set in mode), constructs the
    buffer by
  
   calling strstreambuf(s, n, s + std::strlen(s)). The behavior is undefined if
    there
  
   are less than n elements in the array whose first element is pointed to by s
    or if
  
   the array does not contain a valid null-terminated character sequence.
Parameters¶
 s - char array to use as the output buffer
  
   n - size of the array to be used for output
  
   specifies stream open mode. It is a bitmask type, the following constants are
  
   defined (although only app is used):
  
   Constant Explanation
  
   app seek to the end of stream before each write
  
   mode - 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
Example¶
// Run this code
  
   #include <iostream>
  
   #include <string>
  
   #include <strstream>
  
   int main()
  
   {
  
   // dynamic buffer
  
   std::strstream s1;
  
   s1 << 1 << ' ' << 3.14 << " example"
    << std::ends;
  
   std::cout << "Buffer holds: '" << s1.str() <<
    "'\n";
  
   s1.freeze(false);
  
   int n;
  
   double d;
  
   std::string w;
  
   s1 >> n >> d >> w;
  
   std::cout << "Read back: n = " << n
  
   << ", d = " << d
  
   << ", w = '" << w << "'\n";
  
   // static buffer
  
   char arr[20] = "-1 -3.14 ";
  
   std::strstream s2(arr, sizeof arr, std::ios_base::app);
  
   s2 << "another" << std::ends;
  
   std::cout << "Buffer holds: '" << s2.str() <<
    "'\n";
  
   s2 >> n >> d >> w;
  
   std::cout << "Read back: n = " << n
  
   << ", d = " << d
  
   << ", w = '" << w << "'\n";
  
   }
Output:¶
 Buffer holds: '1 3.14 example'
  
   Read back: n = 1, d = 3.14, w = 'example'
  
   Buffer holds: '-1 -3.14 another'
  
   Read back: n = -1, d = -3.14, w = 'another'
  
   Defect reports
  
   The following behavior-changing defect reports were applied retroactively to
  
   previously published C++ standards.
  
   DR Applied to Behavior as published Correct behavior
  
   overload (2) only considered the case considers cases (mode &
  
   LWG 115 C++98 mode & app == 0 (== has higher precedence app) == 0
  
   than &) and (mode & app) != 0
See also¶
 constructor constructs a strstreambuf object
  
   (public member function of std::strstreambuf)
  
   constructor constructs an istrstream object, optionally allocating the buffer
  
   (public member function of std::istrstream)
  
   constructor constructs an ostrstream object, optionally allocating the buffer
  
   (public member function of std::ostrstream)
| 2024.06.10 | http://cppreference.com |