std::strstreambuf::setbuf(3)
std::strstreambuf::setbuf(3) π
omg hi bestie π welcome to the C++ Standard Libary page for std::strstreambuf::setbuf(3) β yes, the manual name is spelled Libary up there, and we're keeping that historical typo exactly as it appeared, no notes. π«Ά This one is giving protected-virtual legacy energy, so buckle up.
π NAME π
std::strstreambuf::setbuf β std::strstreambuf::setbuf (yes, the name repeats itself; it's iconic, leave it π
)
β¨ Synopsis β¨
protected: (deprecated
in C++98)
virtual streambuf* setbuf( char* s, std::streamsize n ); (removed in
C++26)
Okay so this function is deprecated in C++98 and removed in C++26, which is a whole timeline, ngl. π
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 β that's the whole answer, bestie. π«Ά
πΈ 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
LWG 66β applied toC++98; behavior as published: the effect ofsetbuf()was "performs an operation that is defined separately for each class derived fromstrstreambuf", but there are no classes derived fromstrstreambuf; correct behavior: the effect is implementation-defined.
π₯ See also π₯
pubsetbufβ invokessetbuf()(public member function ofstd::basic_streambuf<CharT,Traits>)setbuf[virtual] β replaces the buffer with user-defined array, if permitted (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)setbuf[virtual] β attempts to replace the controlled character sequence with an array (virtual protected member function ofstd::basic_stringbuf<CharT,Traits,Allocator>)setbuf[virtual] β provides user-supplied buffer or turns this filebuf unbuffered (virtual protected member function ofstd::basic_filebuf<CharT,Traits>)
mwah π this lil page came from cppreference.com, dated 2024.06.10, and it's all about std::strstreambuf::setbuf(3) β periodt. π«Άβ¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms