table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::strstreambuf::setbuf(3) | C++ Standard Libary | std::strstreambuf::setbuf(3) | 
NAME¶
std::strstreambuf::setbuf - std::strstreambuf::setbuf
Synopsis¶
 protected: (deprecated in C++98)
  
   virtual streambuf* setbuf( char* s, std::streamsize n ); (removed in
  C++26)
  
   If s is a null pointer and n is zero, this function has no effect.
  
   Otherwise, the effect is implementation-defined: some implementations do
    nothing,
  
   while some implementations deallocate the dynamic member array used as the
    buffer
  
   and begin using the user-supplied character array of size n, whose first
    element is
  
   pointed to by s.
  
   This function is protected virtual, it may only be called through pubsetbuf()
    or
  
   from member functions of a user-defined class derived from
  std::strstreambuf.
Parameters¶
 s - pointer to the first byte in the user-provided buffer
  
   n - the number of bytes in the user-provided buffer
Return value¶
this
Example¶
 Implementation test to check if setbuf() is supported on a
    dynamic strstream (output
  
   obtained with Sun Studio):
// Run this code
  
   #include <iostream>
  
   #include <strstream>
  
   int main()
  
   {
  
   char a[100] = {};
  
   std::strstream str;
  
   str.rdbuf()->pubsetbuf(a, sizeof a);
  
   str << "Test string" << std::ends;
  
   std::cout << "user-provided buffer holds \"" << a
    << "\"\n";
  
   }
Possible output:¶
user-provided buffer holds "Test string"
  
   Defect reports
  
   The following behavior-changing defect reports were applied retroactively to
  
   previously published C++ standards.
  
   DR Applied to Behavior as published Correct behavior
  
   the effect of setbuf() was "performs an
  
   operation that is
  
   LWG 66 C++98 defined separately for each class derived the effect is
  
   from strstreambuf", implementation-defined
  
   but there are no classes derived from
  
   strstreambuf
See also¶
 pubsetbuf invokes setbuf()
  
   (public member function of std::basic_streambuf<CharT,Traits>)
  
   setbuf replaces the buffer with user-defined array, if permitted
  
   [virtual] (virtual protected member function of
    std::basic_streambuf<CharT,Traits>)
  
   setbuf attempts to replace the controlled character sequence with an array
  
   [virtual] (virtual protected member function
    of
  
   std::basic_stringbuf<CharT,Traits,Allocator>)
  
   setbuf provides user-supplied buffer or turns this filebuf unbuffered
  
   [virtual] (virtual protected member function of
    std::basic_filebuf<CharT,Traits>)
| 2024.06.10 | http://cppreference.com |