std::basic_syncbuf(3)
π NAME π
std::basic_syncbuf β literally the same name, it's giving self-titled debut album π. This page lives in the C++ Standard Libary section (yes, that's the spelling in the header, no cap, we don't correct icons π
).
β¨ Synopsis β¨
Defined in header <syncstream>:
Defined in header <syncstream>
template<
class CharT,
class Traits = std::char_traits<CharT>,
(since C++20)
class Allocator = std::allocator<CharT>
> class basic_syncbuf : public std::basic_streambuf<CharT, Traits>
Okay so bestie, std::basic_syncbuf is a wrapper for a std::basic_streambuf (provided at construction time as a pointer). It accumulates output in its own internal buffer, and atomically transmits its entire contents to the wrapped buffer on destruction and when explicitly requested, so that they appear as a contiguous sequence of characters. It guarantees that there are no data races and no interleaving of characters sent to the wrapped buffer as long as all other outputs made to the same buffer are made through, possibly different, instances of std::basic_syncbuf. Periodt. π«Ά
Typical implementation of std::basic_syncbuf holds a pointer to the wrapped std::basic_streambuf, a boolean flag indicating whether the buffer will transmit its contents to the wrapped buffer on sync (flush), a boolean flag indicating a pending flush when the policy is to not emit on sync, an internal buffer that uses Allocator (such as std::string), and a pointer to a mutex used to synchronize emit between multiple threads accessing the same wrapped stream buffer (these mutexes may be in a hash map with pointers to std::basic_streambuf objects used as keys). It's giving very organized queen energy π.
Like other streambuf classes, std::basic_syncbuf is normally only accessed through the corresponding stream, std::osyncstream, not directly. So don't come for her directly, bestie, use the stream π
.
Several typedefs for common character types are provided:
Defined in header <syncstream>:
std::syncbufβstd::basic_syncbuf<char>std::wsyncbufβstd::basic_syncbuf<wchar_t>
πΈ Member types πΈ
char_typeβCharTtraits_typeβTraits; the program is ill-formed ifTraits::char_typeis notCharT.int_typeβTraits::int_typepos_typeβTraits::pos_typeoff_typeβTraits::off_typeallocator_typeβAllocatorstreambuf_typeβstd::basic_streambuf<CharT, Traits>
π Member functions π
Public member functions
constructorβ constructs abasic_syncbufobject (public member function)operator=β assigns abasic_syncbufobject (public member function)swapβ swaps twobasic_syncbufobjects (public member function)destructorβ destroys thebasic_syncbufand emits its internal buffer (public member function)emitβ atomically transmits the entire internal buffer to the wrapped streambuf (public member function)get_wrappedβ retrieves the wrapped streambuf pointer (public member function)get_allocatorβ retrieves the allocator used by thisbasic_syncbuf(public member function)set_emit_on_syncβ changes the current emit-on-sync policy (public member function)
Protected member functions
syncβ either emits, or records a pending flush, depending on the current emit-on-sync policy (public member function)
Yes, the original says βpublic member functionβ down here under protected member functions. We are simply relaying the lore, bestie π.
Non-member functions
std::swap(std::basic_syncbuf)β specializes thestd::swapalgorithm (C++20) (function template)
π Inherited from std::basic_streambuf π
Member types
char_typeβCharTtraits_typeβTraits; the program is ill-formed ifTraits::char_typeis notCharT.int_typeβTraits::int_typepos_typeβTraits::pos_typeoff_typeβTraits::off_type
Member functions
destructor[virtual]β destructs thebasic_streambufobject (virtual public member function ofstd::basic_streambuf<CharT,Traits>)
Locales
pubimbueβ invokesimbue()(public member function ofstd::basic_streambuf<CharT,Traits>)getlocβ obtains a copy of the associated locale (public member function ofstd::basic_streambuf<CharT,Traits>)
Positioning
pubsetbufβ invokessetbuf()(public member function ofstd::basic_streambuf<CharT,Traits>)pubseekoffβ invokesseekoff()(public member function ofstd::basic_streambuf<CharT,Traits>)pubseekposβ invokesseekpos()(public member function ofstd::basic_streambuf<CharT,Traits>)pubsyncβ invokessync()(public member function ofstd::basic_streambuf<CharT,Traits>)
Get area
in_availβ obtains the number of characters immediately available in the get area (public member function ofstd::basic_streambuf<CharT,Traits>)snextcβ advances the input sequence, then reads one character without advancing again (public member function ofstd::basic_streambuf<CharT,Traits>)sbumpc/stossc(removed in C++17) β reads one character from the input sequence and advances the sequence (public member function ofstd::basic_streambuf<CharT,Traits>)sgetcβ reads one character from the input sequence without advancing the sequence (public member function ofstd::basic_streambuf<CharT,Traits>)sgetnβ invokesxsgetn()(public member function ofstd::basic_streambuf<CharT,Traits>)
Put area
sputcβ writes one character to the put area and advances the next pointer (public member function ofstd::basic_streambuf<CharT,Traits>)sputnβ invokesxsputn()(public member function ofstd::basic_streambuf<CharT,Traits>)
Putback
sputbackcβ puts one character back in the input sequence (public member function ofstd::basic_streambuf<CharT,Traits>)sungetcβ moves the next pointer in the input sequence back by one (public member function ofstd::basic_streambuf<CharT,Traits>)
Protected member functions
constructorβ constructs abasic_streambufobject (protected member function)operator=(C++11)β replaces abasic_streambufobject (protected member function)swap(C++11)β swaps twobasic_streambufobjects (protected member function)
Locales
imbue[virtual]β changes the associated locale (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)
Positioning
setbuf[virtual]β replaces the buffer with user-defined array, if permitted (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)seekoff[virtual]β repositions the next pointer in the input sequence, output sequence, or both, using relative addressing (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)seekpos[virtual]β repositions the next pointer in the input sequence, output sequence, or both using absolute addressing (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)sync[virtual]β synchronizes the buffers with the associated character sequence (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)
Get area
showmanyc[virtual]β obtains the number of characters available for input in the associated input sequence, if known (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)underflow[virtual]β reads characters from the associated input sequence to the get area (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)uflow[virtual]β reads characters from the associated input sequence to the get area and advances the next pointer (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)xsgetn[virtual]β reads multiple characters from the input sequence (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)eback,gptr,egptrβ returns a pointer to the beginning, current character and the end of the get area (protected member function)gbumpβ advances the next pointer in the input sequence (protected member function)setgβ repositions the beginning, next, and end pointers of the input sequence (protected member function)
Put area
xsputn[virtual]β writes multiple characters to the output sequence (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)overflow[virtual]β writes characters to the associated output sequence from the put area (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)pbase,pptr,epptrβ returns a pointer to the beginning, current character and the end of the put area (protected member function)pbumpβ advances the next pointer of the output sequence (protected member function)setpβ repositions the beginning, next, and end pointers of the output sequence (protected member function)
Putback
pbackfail[virtual]β puts a character back into the input sequence, possibly modifying the input sequence (virtual protected member function ofstd::basic_streambuf<CharT,Traits>)
π¦ Notes π¦
Feature-test macro check, bestie:
__cpp_lib_syncbufβ value201803L, std(C++20), feature: Synchronized buffered ostream (std::syncbuf,std::osyncstream) and manipulators
Source: http://cppreference.com, date: 2024.06.10, page: std::basic_syncbuf(3) β and that's the whole tea, go slay those synchronized buffers, bestie πβ¨π«Ά
π¦ 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