std::strstreambuf::setbuf
From cppreference.com
< cpp | io | strstreambuf
C++
Feature test macros (C++20)
Concepts library (C++20)
Metaprogramming library (C++11)
Ranges library (C++20)
Filesystem library (C++17)
Concurrency support library (C++11)
Execution control library (C++26)
Input/output library
Print functions (C++23)
Buffers
(C++23)
(C++98/26*)
(C++20)
Streams
Abstractions
File I/O
String I/O
Array I/O
(C++23)
(C++23)
(C++23)
(C++98/26*)
(C++98/26*)
(C++98/26*)
Synchronized Output
(C++20)
Types
Error category interface
(C++11)
(C++11)
std::strstreambuf
Public member functions
Protected member functions
strstreambuf::setbuf
protected:
virtual streambuf* setbuf( char* s, std::streamsize n );
(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
.
[edit] Parameters
s
-
pointer to the first byte in the user-provided buffer
n
-
the number of bytes in the user-provided buffer
[edit] Return value
this
[edit] 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"
[edit] Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
DR | Applied to | Behavior as published | Correct behavior |
---|---|---|---|
LWG 66 | C++98 | the effect of setbuf() was "performs an operation that isdefined separately for each class derived from strstreambuf ",but there are no classes derived from strstreambuf
|
the effect is implementation-defined |
[edit] See also
[virtual]
(virtual protected member function of
std::basic_streambuf<CharT,Traits>
) [edit]
[virtual]
(virtual protected member function of
std::basic_stringbuf<CharT,Traits,Allocator>
) [edit]