STD::WOSTRINGSTREAM(3)
π¦ NAME π¦
std::basic_ostringstream< _CharT, _Traits, _Alloc > β controlling output for std::string, that's the whole vibe bestie π
This is page std::basic...s, _Alloc >(3) from the Library Functions Manual, and it's part 1 of 7 β more is coming, don't you dare close the tab π
β¨ SYNOPSIS β¨
#include <sstream>
She inherits std::basic_ostream< _CharT, _Traits >, so everything that stream can do? Yeah. She does it too. Family traits, literally. π
πΈ Public Types πΈ
typedef ctype< _CharT > __ctype_typeβ the ctype flavor for your char type π§typedef basic_ios< _CharT, _Traits > __ios_typeβ the base ios type, iconic behavior lives heretypedef num_put< _CharT, ostreambuf_iterator< _CharT, _Traits > > __num_put_typeβ the number-putting machinery β¨typedef basic_ostream< char_type, traits_type > __ostream_typeβ her actual parent, the ostream glow-uptypedef basic_streambuf< _CharT, _Traits > __streambuf_typeβ the buffer type, the engine roomtypedef basic_string< _CharT, _Traits, _Alloc > __string_typeβ the string type she's out here producingtypedef basic_stringbuf< _CharT, _Traits, _Alloc > __stringbuf_typeβ the string buffer underneath, lowkey the real MVPtypedef _Alloc allocator_typeβ your allocator, as requested π«Άtypedef _CharT char_typeβ your char type, no capenum event { erase_event, imbue_event, copyfmt_event }β the set of events that may be passed to an event callback. That's the list, that's the trio πtypedef void(* event_callback) (event __e, ios_base &__b, int __i)β the type of an event callback function πtypedef _Ios_Fmtflags fmtflagsβ this is a bitmask type. Flags on flags on flags π©typedef traits_type::int_type int_typeβ the traits' int type, periodttypedef _Ios_Iostate iostateβ this is a bitmask type. Error states live here πtypedef traits_type::off_type off_typeβ offset type, for the seeking girliestypedef _Ios_Openmode openmodeβ this is a bitmask type. Modes, modes, modestypedef traits_type::pos_type pos_typeβ position type, also for the seeking girliestypedef _Ios_Seekdir seekdirβ this is an enumerated type. Where are we seeking? Excellent questiontypedef _Traits traits_typeβ the traits type herself πtypedef num_get< _CharT, istreambuf_iterator< _CharT, _Traits > > __num_get_typeβ nested insidetraits_type, the number-getting counterpart π
π Public Member Functions π
basic_ostringstream ()β default constructor, starts with an empty string buffer. Fresh, clean, nothing in her πbasic_ostringstream (__string_type &&__str, ios_base::openmode __mode=ios_base::out)β move in a string, pick your__mode, default isios_base::outbasic_ostringstream (basic_ostringstream &&__rhs)β move constructor, she takes everything__rhshadbasic_ostringstream (const __string_type &__str, ios_base::openmode __mode=ios_base::out)β starts with an existing string buffer. She's got baggage and honestly? Slay πbasic_ostringstream (const basic_ostringstream &)=deleteβ copy constructor is deleted. Not available. Do not try it π«template<typename _SAlloc> basic_ostringstream (const basic_string< _CharT, _Traits, _SAlloc > &__str, const allocator_type &__a)β string plus allocator, templated on_SAllocβ¨template<typename _SAlloc> basic_ostringstream (const basic_string< _CharT, _Traits, _SAlloc > &__str, ios_base::openmode __mode, const allocator_type &__a)β string, mode, and allocator, the full combo meal πtemplate<typename _SAlloc> basic_ostringstream (const basic_string< _CharT, _Traits, _SAlloc > &__str, ios_base::openmode __mode=ios_base::out)β templated string with a mode, defaultios_base::outbasic_ostringstream (ios_base::openmode __mode)β starts with an empty string buffer, but now you're picking the__modeπΈbasic_ostringstream (ios_base::openmode __mode, const allocator_type &__a)β mode plus allocator, no string, still empty~basic_ostringstream ()β the destructor does nothing. She's unbothered. Unfazed. Iconic πconst locale & _M_getloc () constβ locale access πtemplate<typename _ValueT> basic_ostream< _CharT, _Traits > & _M_insert (_ValueT __v)β the internal insert, templated on_ValueTvoid _M_setstate (iostate __state)β internal state setterbool bad () constβ fast error checking. Is it bad bad? She'll tell you πvoid clear (iostate __state=goodbit)β [re]sets the error state, default isgoodbitβ¨basic_ios & copyfmt (const basic_ios &__rhs)β copies fields of__rhsinto this π«Άbool eof () constβ fast error checking. End of file check, quick quickiostate exceptions () constβ throwing exceptions on errors πvoid exceptions (iostate __except)β throwing exceptions on errors, now you're setting the__exceptmaskbool fail () constβ fast error checking. Did it fail? Asking for a friendchar_type fill () constβ retrieves the empty character, the fill charchar_type fill (char_type __ch)β sets a new empty character to__chfmtflags flags () constβ access to format flags π©fmtflags flags (fmtflags __fmtfl)β setting new format flags all at once, go off__ostream_type & flush ()β synchronizing the stream buffer. Push it out, queen πlocale getloc () constβ locale access again, still servingbool good () constβ fast error checking. Is everything good? Bestie check-in πlocale imbue (const locale &__loc)β moves to a new locale πlong & iword (int __ix)β access to integer array, index__ixchar narrow (char_type __c, char __dfault) constβ squeezes characters, with__dfaultas the fallback__ostream_type & operator<< (__streambuf_type *__sb)β extracting from another streambuf π₯__ostream_type & operator<< (const void *__p)β pointer arithmetic inserters π―__ostream_type & operator<< (const volatile void *__p)β the volatile pointer flavor of the same vibe__ostream_type & operator<< (nullptr_t)β and thenullptr_tflavor toobasic_ostringstream & operator= (basic_ostringstream &&__rhs)β move assignment, she takes over__rhsentirelybasic_ostringstream & operator= (const basic_ostringstream &)=deleteβ copy assignment is deleted. Nope. Not a thing π«streamsize precision () constβ flags access πstreamsize precision (streamsize __prec)β changing flags, setting precision to__precvoid *& pword (int __ix)β access to void pointer array, index__ixbasic_streambuf< _CharT, _Traits > * rdbuf (basic_streambuf< _CharT, _Traits > *__sb)β changing the underlying buffer to__sbπ__stringbuf_type * rdbuf () constβ accessing the underlying buffer. It's a__stringbuf_type *and it's all hers πiostate rdstate () constβ returns the error state of the stream buffervoid register_callback (event_callback __fn, int __index)β add the callback__fnwith parameter__indexπ__ostream_type & seekp (off_type, ios_base::seekdir)β changing the current write position, offset + direction style__ostream_type & seekp (pos_type)β changing the current write position, absolute position stylefmtflags setf (fmtflags __fmtfl)β setting new format flags π©fmtflags setf (fmtflags __fmtfl, fmtflags __mask)β setting new format flags, but masked this timevoid setstate (iostate __state)β sets additional flags in the error state__string_type str () &&β copying out the string buffer, rvalue-ref-qualified version__string_type str () const &β copying out the string buffer, const lvalue-ref-qualified version. Same energy, different qualifiervoid str (__string_type &&__s)β setting a new buffer, moving__sinvoid str (const __string_type &__s)β setting a new buffer from__sπtemplate<__allocator_like _SAlloc> basic_string< _CharT, _Traits, _SAlloc > str (const _SAlloc &__sa) constβ copy out the string but with an allocator-like_SAllocof your choosingtemplate<__allocator_like _SAlloc> void str (const basic_string< _CharT, _Traits, _SAlloc > &__s)β set a new buffer from a string with an allocator-like_SAllocvoid swap (basic_ostringstream &__rhs)β swap with__rhs, trade places bestie πpos_type tellp ()β getting the current write position πbasic_ostream< _CharT, _Traits > * tie () constβ fetches the current tied streambasic_ostream< _CharT, _Traits > * tie (basic_ostream< _CharT, _Traits > *__tiestr)β ties this stream to an output stream__tiestrπ«Άvoid unsetf (fmtflags __mask)β clearing format flags π§Ήbasic_string_view< char_type, traits_type > view () const noexceptβ a view of it,noexcept, zero drama β¨char_type widen (char __c) constβ widens characters π¦streamsize width () constβ flags accessstreamsize width (streamsize __wide)β changing flags, width set to__wide
Then the manipulator-interface operators, all nested right there in the member list:
__ostream_type & operator<< (__ostream_type &(*__pf)(__ostream_type &))β interface for manipulators ποΈ__ostream_type & operator<< (__ios_type &(*__pf)(__ios_type &))β interface for manipulators__ostream_type & operator<< (ios_base &(*__pf)(ios_base &))β interface for manipulators
π Inserters π
Okay so here's the tea π« β all the operator<< functions (aka the formatted output functions) have some common behavior, and it's always the same little ritual:
- Each one starts by constructing a temporary object of type
std::basic_ostream::sentry. That sentry can have several effects, and it wraps up by setting a status flag. See the sentry documentation for more, bestie, because there's a lot going on there. - If the sentry status is good, the function tries to generate whatever data is appropriate for the type of the argument β¨
- If an exception is thrown during insertion,
ios_base::badbitwill be turned on in the stream's error state without causing anios_base::failureto be thrown. Then the original exception gets rethrown π
Not me warning you: the exception behavior is exactly as written βbadbitgoes on, noios_base::failure, original exception rethrown. Don't improvise.
The actual inserters:
__ostream_type & operator<< (long __n)β integer arithmetic inserters π’__ostream_type & operator<< (unsigned long __n)β integer arithmetic inserters__ostream_type & operator<< (bool __n)β integer arithmetic inserters__ostream_type & operator<< (short __n)β integer arithmetic inserters__ostream_type & operator<< (unsigned short __n)β integer arithmetic inserters__ostream_type & operator<< (int __n)β integer arithmetic inserters__ostream_type & operator<< (unsigned int __n)β integer arithmetic inserters__ostream_type & operator<< (long long __n)β integer arithmetic inserters__ostream_type & operator<< (unsigned long long __n)β integer arithmetic inserters__ostream_type & operator<< (double __f)β floating point arithmetic inserters π__ostream_type & operator<< (float __f)β floating point arithmetic inserters__ostream_type & operator<< (long double __f)β floating point arithmetic inserters
π§ Unformatted Output Functions π§
And for the unformatted girlies, same story, slightly different ending: all the unformatted output functions have some common behavior too. Each one starts by constructing a temporary object of type std::basic_ostream::sentry. That has several effects, concluding with the setting of a status flag β see the sentry documentation for more.
- If the sentry status is good, the function tries to generate whatever data is appropriate for the type of the argument π
- If an exception is thrown during insertion,
ios_base::badbitwill be turned on in the stream's error state. And ifbadbitis on in the stream's exceptions mask, the exception will be rethrown without completing its actions π
Yeah, that second bullet is the important one β read it twice.
__ostream_type & put (char_type __c)β simple insertion. One character, in she goes π__ostream_type & write (const char_type *__s, streamsize __n)β character string insertion,__nchars from__sπoperator bool () constβ the quick-and-easy status check. Yes or no, bestie πbool operator! () constβ the quick-and-easy status check, but negated
β Static Public Member Functions β
static bool sync_with_stdio (bool __sync=true)β interaction with the standard C I/O objects. Default istrue, because of course it is πstatic int xalloc () throw ()β access to unique indices. Yes, that'sthrow ()with the empty exception spec, exactly as written, don't @ me π
β¨ Static Public Attributes β¨
okay bestie, here's the whole shelf of static const goodies you inherit β every single one, no skips π
static const openmode __noreplaceβ yeah this one's just sitting here, no description in the source, we move.static const fmtflags adjustfieldβ a mask ofleft|right|internal. lowkey perfect for the 2-arg form ofsetf.static const openmode appβ seek to end before each write. like "always append, never forget" energy.static const openmode ateβ open, then immediately seek to end. not to be confused withapp, she's a different girl π«Άstatic const iostate badbitβ indicates a loss of integrity in an input or output sequence (such as an irrecoverable read error from a file). this is the "it's over" bit πstatic const fmtflags basefieldβ a mask ofdec|oct|hex. useful for the 2-arg form ofsetf.static const seekdir begβ request a seek relative to the beginning of the stream.static const openmode binaryβ perform input and output in binary mode (as opposed to text mode). > bestie, this is probably not what you think it is; seehttps://gcc.gnu.org/onlinedocs/libstdc++/manual/fstreams.html#std.io.filestreams.binary.static const fmtflags boolalphaβ insert/extractboolin alphabetic rather than numeric format. sotrueinstead of1, slay.static const seekdir curβ request a seek relative to the current position within the sequence.static const fmtflags decβ converts integer input or generates integer output in decimal base.static const seekdir endβ request a seek relative to the current end of the sequence.static const iostate eofbitβ indicates that an input operation reached the end of an input sequence. the classic "nothing left to read" moment πstatic const iostate failbitβ indicates that an input operation failed to read the expected characters, or that an output operation failed to generate the desired characters.static const fmtflags fixedβ generate floating-point output in fixed-point notation.static const fmtflags floatfieldβ a mask ofscientific|fixed. useful for the 2-arg form ofsetf.static const iostate goodbitβ indicates all is well. the healthiest bit, we stan πΈstatic const fmtflags hexβ converts integer input or generates integer output in hexadecimal base.static const openmode inβ open for input. default forifstreamandfstream.static const fmtflags internalβ adds fill characters at a designated internal point in certain generated output, or identical torightif no such point is designated.static const fmtflags leftβ adds fill characters on the right (final positions) of certain generated output. (i.e., the thing you print is flush left.).static const fmtflags octβ converts integer input or generates integer output in octal base.static const openmode outβ open for output. default forofstreamandfstream.static const fmtflags rightβ adds fill characters on the left (initial positions) of certain generated output. (i.e., the thing you print is flush right.).static const fmtflags scientificβ generates floating-point output in scientific notation.static const fmtflags showbaseβ generates a prefix indicating the numeric base of generated integer output.static const fmtflags showpointβ generates a decimal-point character unconditionally in generated floating-point output.static const fmtflags showposβ generates a+sign in non-negative generated numeric output.static const fmtflags skipwsβ skips leading white space before certain input operations.static const openmode truncβ truncate an existing stream when opening. default forofstream.static const fmtflags unitbufβ flushes output after each output operation. no buffering, we're impatient πstatic const fmtflags uppercaseβ replaces certain lowercase letters with their uppercase equivalents in generated output.
π Protected Types π
enum { _S_local_word_size }
π Protected Member Functions π
void _M_cache_locale (const locale &__loc)void _M_call_callbacks (event __ev) throw ()void _M_dispose_callbacks (void) throw ()_Words & _M_grow_words (int __index, bool __iword)void _M_init () throw ()template<typename _ValueT> __ostream_type & _M_insert (_ValueT __v)void _M_move (ios_base &) noexceptvoid _M_swap (ios_base &__rhs) noexceptvoid init (basic_streambuf< _CharT, _Traits > *__sb)β all setup is performed here. literally all of it, bestie, one stop shop β¨void move (basic_ios &&__rhs)void move (basic_ios &__rhs)void set_rdbuf (basic_streambuf< _CharT, _Traits > *__sb)void swap (basic_ios &__rhs) noexceptvoid swap (basic_ostream &__rhs)
π«£ Protected Attributes π«£
_Callback_list * _M_callbacksconst __ctype_type * _M_ctypeiostate _M_exceptionchar_type _M_fillbool _M_fill_initfmtflags _M_flagslocale _M_ios_locale_Words _M_local_word [_S_local_word_size]const __num_get_type * _M_num_getconst __num_put_type * _M_num_putstreamsize _M_precisionbasic_streambuf< _CharT, _Traits > * _M_streambufiostate _M_streambuf_statebasic_ostream< _CharT, _Traits > * _M_tiestreamsize _M_width_Words * _M_wordint _M_word_size_Words _M_word_zero
π Detailed Description π
template<typename _CharT, typename _Traits, typename _Alloc>
class std::basic_ostringstream< _CharT, _Traits, _Alloc >
Controlling output for std::string. yes bestie, she's the one holding the pen ποΈβ¨
Template Parameters
_CharTβ type of character stream._Traitsβ traits for character type, defaults tochar_traits<_CharT>._Allocβ allocator type, defaults toallocator<_CharT>.
This class supports writing to objects of type std::basic_string, using the inherited functions from std::basic_ostream. To control the associated sequence, an instance of std::basic_stringbuf is used, which this page refers to as sb.
π Member Typedef Documentation π
template<typename _CharT, typename _Traits> typedef num_get<_CharT,
istreambuf_iterator<_CharT, _Traits> > std::basic_ios< _CharT, _Traits
>::__num_get_type [inherited]
These are non-standard types. iykyk π
typedef void(* std::ios_base::event_callback) (event __e, ios_base &__b, int
__i) [inherited]
The type of an event callback function.
Parameters
__eβ one of the members of theeventenum.__bβ reference to theios_baseobject.__iβ the integer provided when the callback was registered.
Event callbacks are user defined functions that get called during several ios_base and basic_ios functions, specifically imbue(), copyfmt(), and ~ios().
typedef _Ios_Fmtflags std::ios_base::fmtflags [inherited]
This is a bitmask type. _Ios_Fmtflags is implementation-defined, but it is valid to perform bitwise operations on these values and expect the Right Thing to happen. Defined objects of type fmtflags are:
boolalphadecfixedhexinternalleftoctrightscientificshowbaseshowpointshowposskipwsunitbufuppercaseadjustfieldbasefieldfloatfield
typedef _Ios_Iostate std::ios_base::iostate [inherited]
This is a bitmask type. _Ios_Iostate is implementation-defined, but it is valid to perform bitwise operations on these values and expect the Right Thing to happen. Defined objects of type iostate are:
badbiteofbitfailbitgoodbit
typedef _Ios_Openmode std::ios_base::openmode [inherited]
This is a bitmask type. _Ios_Openmode is implementation-defined, but it is valid to perform bitwise operations on these values and expect the Right Thing to happen. Defined objects of type openmode are:
appatebinaryinouttrunc
typedef _Ios_Seekdir std::ios_base::seekdir [inherited]
This is an enumerated type. _Ios_Seekdir is implementation-defined. Defined values of type seekdir are:
begcur, equivalent toSEEK_CURin the C standard library.end, equivalent toSEEK_ENDin the C standard library.
π§ Member Enumeration Documentation π§
enum std::ios_base::event [inherited]
The set of events that may be passed to an event callback. erase_event is used during ~ios() and copyfmt(). imbue_event is used during imbue(). copyfmt_event is used during copyfmt().
π Constructor & Destructor Documentation π
template<typename _CharT, typename _Traits, typename _Alloc>
std::basic_ostringstream< _CharT, _Traits, _Alloc >::basic_ostringstream
() [inline]
Default constructor starts with an empty string buffer. Initializes sb using mode|out, and passes &sb to the base class initializer. Does not allocate any buffer.
That's a lie. We initialize the base class with NULL, because the string class does its own memory management. π
template<typename _CharT, typename _Traits, typename _Alloc>
std::basic_ostringstream< _CharT, _Traits, _Alloc >::basic_ostringstream
(ios_base::openmode __mode) [inline], [explicit]
Starts with an empty string buffer.
Parameters
__modeβ whether the buffer can read, or write, or both.
ios_base::out is automatically included in mode.
Initializes sb using mode|out, and passes &sb to the base class initializer. Does not allocate any buffer.
That's a lie. We initialize the base class with NULL, because the string class does its own memory management. π
template<typename _CharT, typename _Traits, typename _Alloc>
std::basic_ostringstream< _CharT, _Traits, _Alloc >::basic_ostringstream
(const __string_type & __str, ios_base::openmode __mode = ios_base::out)
[inline], [explicit]
Starts with an existing string buffer.
Parameters
__strβ a string to copy as a starting buffer.__modeβ whether the buffer can read, or write, or both.
ios_base::out is automatically included in mode.
Initializes sb using str and mode|out, and passes &sb to the base class initializer.
That's a lie. We initialize the base class with NULL, because the string class does its own memory management. bestie they really said it three times, and honestly? iconic.
template<typename _CharT, typename _Traits, typename _Alloc>
std::basic_ostringstream< _CharT, _Traits, _Alloc
>::~basic_ostringstream () [inline]
The destructor does nothing. The buffer is deallocated by the stringbuf object, not the formatting stream. she's not doing the work, and that's valid π«Ά
π Member Function Documentation π
const locale & std::ios_base::_M_getloc () const [inline], [inherited]
Locale access.
Returns
A reference to the current locale.
Like getloc above, but returns a reference instead of generating a copy. so efficient, we love her β¨
Referenced by std::money_get< _CharT, _InIter >::do_get(), std::num_get< _CharT, _InIter >::do_get(), std::time_get< _CharT, _InIter >::do_get(), std::time_get< _CharT, _InIter >::do_get_date(), std::time_get< _CharT, _InIter >::do_get_monthname(), std::time_get< _CharT, _InIter >::do_get_time(), std::time_get< _CharT, _InIter >::do_get_weekday(), std::time_get< _CharT, _InIter >::do_get_year(), std::num_put< _CharT, _OutIter >::do_put(), std::time_put< _CharT, _OutIter >::do_put(), std::time_get< _CharT, _InIter >::get(), and std::time_put< _CharT, _OutIter >::put().
π©Ή bad()
template<typename _CharT, typename _Traits> bool std::basic_ios< _CharT, _Traits >::bad () const
[inline], [nodiscard], [inherited]
Bestie, this is the fast error checking girlie π she just peeks and tells you the tea.
Returns: True if the badbit is set.
Heads up tho β otheriostateflags may also be set, so don't assumebadbitis the whole story. π
Referenced by std::basic_ostream< _CharT, _Traits >::sentry::sentry().
π§Ό clear()
template<typename _CharT, typename _Traits> void std::basic_ios< _CharT, _Traits >::clear (iostate __state = goodbit)
[inherited]
The [Re]sets the error state function β the glow-up reset button for your stream β¨
Parameters
__stateβ the new state flag(s) to set.
Peep std::ios_base::iostate for the possible bit values. Most users will not need to pass an argument, fr fr.
References std::ios_base::badbit, exceptions(), rdbuf(), and rdstate().
Referenced by std::basic_ios< char_type, traits_type >::exceptions(), std::basic_fstream< char >::open(), std::basic_fstream< char >::open(), std::basic_ifstream< char >::open(), std::basic_ifstream< char >::open(), std::basic_ofstream< char >::open(), std::basic_ofstream< char >::open(), std::__detail::operator>>(), std::basic_istream< _CharT, _Traits >::putback(), rdbuf(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_ios< char_type, traits_type >::setstate(), and std::basic_istream< _CharT, _Traits >::unget().
π copyfmt()
template<typename _CharT, typename _Traits> basic_ios< _CharT, _Traits > & std::basic_ios< _CharT, _Traits >::copyfmt (const basic_ios< _CharT, _Traits > & __rhs)
[inherited]
Copies fields of __rhs into this. It's giving "copy her whole aesthetic" π
Parameters
__rhsβ the source values for the copies.
Returns: a reference to this object.
So here's the rundown: all fields of __rhs get copied into this object, except that rdbuf() and rdstate() stay unchanged. All values in the pword and iword arrays get copied too. Before copying, each callback is invoked with erase_event. After copying, each (new) callback is invoked with copyfmt_event. And the final step? Copy exceptions(). Periodt. π
References basic_ios(), std::__addressof(), exceptions(), fill(), std::ios_base::flags(), std::ios_base::getloc(), std::ios_base::precision(), tie(), std::tie(), and std::ios_base::width().
π eof()
template<typename _CharT, typename _Traits> bool std::basic_ios< _CharT, _Traits >::eof () const
[inline], [nodiscard], [inherited]
Fast error checking, bestie β‘
Returns: True if the eofbit is set.
Same disclaimer as before β other iostate flags may also be set. πΈ
π¨ exceptions() (the const one)
template<typename _CharT, typename _Traits> iostate std::basic_ios< _CharT, _Traits >::exceptions () const
[inline], [nodiscard], [inherited]
Throwing exceptions on errors β the dramatic option, honestly iconic.
Returns: the current exceptions mask.
This changes nothing in the stream, no cap. See the one-argument version of exceptions(iostate) for the meaning of the return value.
Referenced by clear(), and copyfmt().
π exceptions() (the setter)
template<typename _CharT, typename _Traits> void std::basic_ios< _CharT, _Traits >::exceptions (iostate __except)
[inline], [inherited]
Throwing exceptions on errors, but make it a choice this time.
Parameters
__exceptβ the new exceptions mask.
By default, error flags are set silently π€«. You can set an exceptions mask for each stream; if a bit in the mask becomes set in the error flags, then an exception of type std::ios_base::failure is thrown.
And if the error flag is already set when the exceptions mask is added, the exception is immediately thrown π no waiting, no chill. Try running the following under GCC 3.1 or later:
#include <iostream>
#include <fstream>
#include <exception>
int main()
{
std::set_terminate (__gnu_cxx::__verbose_terminate_handler);
std::ifstream f ("/etc/motd");
std::cerr << "Setting badbit\n";
f.setstate (std::ios_base::badbit);
std::cerr << "Setting exception mask\n";
f.exceptions (std::ios_base::badbit);
}
π fail()
template<typename _CharT, typename _Traits> bool std::basic_ios< _CharT, _Traits >::fail () const
[inline], [nodiscard], [inherited]
Fast error checking, third installment π«Ά
Returns: True if either the badbit or the failbit is set.
Checking the badbit in fail() is historical practice, iykyk. Note that other iostate flags may also be set.
Referenced by std::basic_ios< char_type, traits_type >::operator bool(), std::basic_ios< char_type, traits_type >::operator!(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_ostream< _CharT, _Traits >::seekp(), std::basic_ostream< _CharT, _Traits >::seekp(), std::basic_istream< _CharT, _Traits >::tellg(), and std::basic_ostream< _CharT, _Traits >::tellp().
π§΄ fill() (getter)
template<typename _CharT, typename _Traits> char_type std::basic_ios< _CharT, _Traits >::fill () const
[inline], [nodiscard], [inherited]
Retrieves the empty character. The little filler character that pads out your output π
Returns: the current fill character.
It defaults to a space (' ') in the current locale.
Referenced by copyfmt(), and std::philox_engine< uint_fast32_t, 32, 4, 10, 0xCD9E8D57, 0x9E3779B9, 0xD2511F53, 0xBB67AE85 >::operator<<.
ποΈ fill() (setter)
template<typename _CharT, typename _Traits> char_type std::basic_ios< _CharT, _Traits >::fill (char_type __ch)
[inline], [inherited]
Sets a new empty character, glow-up edition β¨
Parameters
__chβ the new character.
Returns: the previous fill character.
The fill character is used to fill out space when P+ characters have been requested (e.g., via setw), Q characters are actually used, and Q<P. It defaults to a space (' ') in the current locale.
π© flags() (getter)
fmtflags std::ios_base::flags () const
[inline], [nodiscard], [inherited]
Access to format flags. The whole vibe of your stream formatting, in one little bundle π¦
Returns: the format control flags for both input and output.
Referenced by std::basic_ios< _CharT, _Traits >::copyfmt(), std::num_get< _CharT, _InIter >::do_get(), std::num_get< _CharT, _InIter >::do_get(), std::num_put< _CharT, _OutIter >::do_put(), std::num_put< _CharT, _OutIter >::do_put(), std::chrono::operator<<(), std::philox_engine< uint_fast32_t, 32, 4, 10, 0xCD9E8D57, 0x9E3779B9, 0xD2511F53, 0xBB67AE85 >::operator<<, std::__detail::operator>>(), std::operator>>(), std::operator>>(), std::operator>>(), std::operator>>(), std::operator>>(), std::operator>>(), std::operator>>(), and std::philox_engine< uint_fast32_t, 32, 4, 10, 0xCD9E8D57, 0x9E3779B9, 0xD2511F53, 0xBB67AE85 >::operator>>.
ποΈ flags() (setter)
fmtflags std::ios_base::flags (fmtflags __fmtfl)
[inline], [inherited]
Setting new format flags all at once. It's giving "new year, new me" π
Parameters
__fmtflβ the new flags to set.
Returns: the previous format control flags.
Careful bestie β this function overwrites all the format flags with __fmtfl. No merging, no mercy. π
π¦ flush()
template<typename _CharT, typename _Traits> basic_ostream< _CharT, _Traits > & std::basic_ostream< _CharT, _Traits >::flush ()
[inherited]
Synchronizing the stream buffer β aka making sure your output actually left the group chat and showed up somewhere real.
Returns: *this
If rdbuf() is a null pointer, changes nothing.
Otherwise, calls rdbuf()->pubsync(), and if that returns -1, sets badbit. π¬
References std::ios_base::badbit, std::ios_base::goodbit, std::basic_ios< _CharT, _Traits >::rdbuf(), and std::basic_ios< _CharT, _Traits >::setstate().
Referenced by std::flush().
π getloc()
locale std::ios_base::getloc () const
[inline], [nodiscard], [inherited]
Locale access π«Ά
Returns: a copy of the current locale.
If imbue(loc) has previously been called, then this function returns loc. Otherwise, it returns a copy of std::locale(), the global C++ locale.
Referenced by std::basic_ios< _CharT, _Traits >::copyfmt(), std::money_put< _CharT, _OutIter >::do_put(), std::basic_ios< _CharT, _Traits >::imbue(), std::chrono::operator<<(), std::operator>>(), std::operator>>(), and std::ws().
β
good()
template<typename _CharT, typename _Traits> bool std::basic_ios< _CharT, _Traits >::good () const
[inline], [nodiscard], [inherited]
Fast error checking β the main character check, the vibe check, the "are we okay bestie?" πΈ
Returns: True if no error flags are set.
A wrapper around rdstate.
Referenced by std::basic_istream< _CharT, _Traits >::sentry::sentry(), std::basic_ostream< _CharT, _Traits >::sentry::sentry(), and std::__detail::operator>>().
π imbue()
template<typename _CharT, typename _Traits> locale std::basic_ios< _CharT, _Traits >::imbue (const locale & __loc)
[inherited]
Moves to a new locale β she's relocating, new city, new energy π§
Parameters
__locβ the new locale.
Returns: the previous locale.
Calls ios_base::imbue(loc), and if a stream buffer is associated with this stream, calls that buffer's pubimbue(loc).
Additional l10n notes are at https://gcc.gnu.org/onlinedocs/libstdc++/manual/localization.html
References std::ios_base::getloc(), std::ios_base::imbue(), and rdbuf().
Referenced by std::chrono::operator<<().
π οΈ init()
template<typename _CharT, typename _Traits> void std::basic_ios< _CharT, _Traits >::init (basic_streambuf< _CharT, _Traits > * __sb)
[protected], [inherited]
All setup is performed here. This is called from the public constructor. It is not virtual and cannot be redefined. No notes. π
Referenced by std::basic_fstream< char >::basic_fstream(), std::basic_fstream< char >::basic_fstream(), std::basic_fstream< char >::basic_fstream(), std::basic_ifstream< char >::basic_ifstream(), std::basic_ifstream< char >::basic_ifstream(), std::basic_ifstream< char >::basic_ifstream(), std::basic_ios< char_type, traits_type >::basic_ios(), std::basic_istream< char_type, traits_type >::basic_istream(), std::basic_istringstream< char >::basic_istringstream(), std::basic_istringstream< char >::basic_istringstream(), std::basic_istringstream< char >::basic_istringstream(), std::basic_ofstream< char >::basic_ofstream(), std::basic_ofstream< char >::basic_ofstream(), std::basic_ofstream< char >::basic_ofstream(), std::basic_ostream< char_type, traits_type >::basic_ostream(), std::basic_ostringstream< char >::basic_ostringstream(), std::basic_ostringstream< char >::basic_ostringstream(), std::basic_ostringstream< char >::basic_ostringstream(), std::basic_stringstream< char >::basic_stringstream(), std::basic_stringstream< char >::basic_stringstream(), and std::basic_stringstream< char >::basic_stringstream().
π’ iword()
long & std::ios_base::iword (int __ix)
[inline], [inherited]
Access to integer array π
Parameters
__ixβ index into the array.
Returns: a reference to an integer associated with the index.
The iword function provides access to an array of integers that can be used for any purpose. The array grows as required to hold the supplied index. All integers in the array are initialized to 0.
Real talk: the implementation reserves several indices. You should use xalloc to obtain an index that is safe to use. Also note that since the array can grow dynamically, it is not safe to hold onto the reference. π
References iword().
Referenced by iword().
π narrow()
template<typename _CharT, typename _Traits> char std::basic_ios< _CharT, _Traits >::narrow (char_type __c, char __dfault) const
[inline], [inherited]
Squeezes characters.
okay so this is still narrow() β here's the tea on its args π«
Parameters
__cβ the character to narrow, bestie__dfaultβ the character to narrow (aka your fallback, the one who shows up when nobody else can) π
Returns
The narrowed character. Periodt. β¨
It maps a character of char_type to a character of char, if possible β like, only if it's giving what it needs to give. It returns the result of:
std::use_facet<ctype<char_type> >(getloc()).narrow(c,dfault)
Additional l10n notes live at https://gcc.gnu.org/onlinedocs/libstdc++/manual/localization.html β go read them, they ate. π
template<typename _CharT, typename _Traits> std::basic_ios< _CharT, _Traits >::operator bool () const [inline], [explicit], [nodiscard], [inherited]
The quick-and-easy status check π. The way this lets you write little constructs like if (!a_stream) ... and while (a_stream) ... β iconic behavior honestly.
template<typename _CharT, typename _Traits> bool std::basic_ios< _CharT, _Traits >::operator! () const [inline], [nodiscard], [inherited]
Also the quick-and-easy status check π
. Same deal, same energy: it lets you write things like if (!a_stream) ... and while (a_stream) ...
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (__ios_type &(* __pf )(__ios_type &)) [inline], [inherited]
Interface for manipulators π§. Manipulators like std::endl and std::hex use these functions in constructs like "std::cout << std::endl". For more info, go peek at the iomanip header, iykyk.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (__ostream_type &(* __pf )(__ostream_type &)) [inline], [inherited]
Interface for manipulators πΈ. Manipulators such as std::endl and std::hex use these functions in constructs like "std::cout << std::endl". For more information, see the iomanip header.
template<typename _CharT, typename _Traits> basic_ostream< _CharT, _Traits > & std::basic_ostream< _CharT, _Traits >::operator<< (__streambuf_type * __sb) [inherited]
Extracting from another streambuf π this one's a whole saga, so sit down.
Parameters
__sbβ a pointer to a streambuf
This function behaves like one of the basic arithmetic extractors, in that it also constructs a sentry object and has the same error handling behavior. (Yes, "extractors" β that's what it says, no cap.)
If __sb is NULL, the stream will set failbit in its error state π.
Characters are extracted from __sb and inserted into *this until one of the following occurs:
- the input stream reaches end-of-file,
- insertion into the output sequence fails (in this case, the character that would have been inserted is not extracted), or
- an exception occurs while getting a character from
__sb, which setsfailbitin the error state
If the function inserts no characters, failbit is set.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (bool __n) [inline], [inherited]
Integer arithmetic inserters π
Parameters
__nβ a variable of builtin integral type.
Returns
*this if successful β¨
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (const void * __p) [inline], [inherited]
Pointer arithmetic inserters π
Parameters
__pβ a variable of pointer type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (double __f) [inline], [inherited]
Floating point arithmetic inserters π
Parameters
__fβ a variable of builtin floating point type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (float __f) [inline], [inherited]
Floating point arithmetic inserters π (yes bestie, float got its own whole entry, they said equal rights)
Parameters
__fβ a variable of builtin floating point type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
template<typename _CharT, typename _Traits> basic_ostream< _CharT, _Traits > & std::basic_ostream< _CharT, _Traits >::operator<< (int __n) [inherited]
Integer arithmetic inserters π₯ (notice: no [inline] here, she's built different)
Parameters
__nβ a variable of builtin integral type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (ios_base &(* __pf )(ios_base &)) [inline], [inherited]
Interface for manipulators π. Manipulators such as std::endl and std::hex use these functions in constructs like "std::cout << std::endl". For more information, see the iomanip header.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (long __n) [inline], [inherited]
Integer arithmetic inserters β¨
Parameters
__nβ a variable of builtin integral type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (long double __f) [inline], [inherited]
Floating point arithmetic inserters π¦
Parameters
__fβ a variable of builtin floating point type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (long long __n) [inline], [inherited]
Integer arithmetic inserters π
Parameters
__nβ a variable of builtin integral type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
template<typename _CharT, typename _Traits> basic_ostream< _CharT, _Traits > & std::basic_ostream< _CharT, _Traits >::operator<< (short __n) [inherited]
Integer arithmetic inserters π
Parameters
__nβ a variable of builtin integral type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
References basic_ostream(), std::ios_base::badbit, std::ostreambuf_iterator< _CharT, _Traits >::failed(), std::ios_base::goodbit, std::num_put< _CharT, _OutIter >::put(), std::basic_ios< _CharT, _Traits >::setstate(), and std::use_facet().
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (unsigned int __n) [inline], [inherited]
Integer arithmetic inserters π
Parameters
__nβ a variable of builtin integral type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (unsigned long __n) [inline], [inherited]
Integer arithmetic inserters π§
Parameters
__nβ a variable of builtin integral type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (unsigned long long __n) [inline], [inherited]
Integer arithmetic inserters π (the longest of the long longs, she's the main character)
Parameters
__nβ a variable of builtin integral type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
template<typename _CharT, typename _Traits> __ostream_type & std::basic_ostream< _CharT, _Traits >::operator<< (unsigned short __n) [inline], [inherited]
Integer arithmetic inserters πΈ
Parameters
__nβ a variable of builtin integral type.
Returns
*this if successful
These functions use the stream's current locale (specifically, the num_get facet) to perform numeric formatting.
streamsize std::ios_base::precision () const [inline], [nodiscard], [inherited]
Flags access π
Returns
The precision to generate on certain output operations.
Be careful if you try to give a definition of precision here; see DR 189. π (not me warning you twice, it's literally in the source)
Referenced by std::basic_ios< _CharT, _Traits >::copyfmt(), and std::chrono::operator<<().
streamsize std::ios_base::precision (streamsize __prec) [inline], [inherited]
Changing flags β¨
Parameters
__precβ the new precision value.
Returns
The previous value of precision().
template<typename _CharT, typename _Traits> basic_ostream< _CharT, _Traits > & std::basic_ostream< _CharT, _Traits >::put (char_type __c) [inherited]
Simple insertion π
Parameters
__cβ the character to insert.
Returns
*this
Tries to insert __c.
Note: This function is not overloaded onsigned charandunsigned char. π
References std::ios_base::badbit, std::ios_base::goodbit, std::basic_ios< _CharT, _Traits >::rdbuf(), and std::basic_ios< _CharT, _Traits >::setstate().
Referenced by std::endl(), and std::ends().
void *& std::ios_base::pword (int __ix) [inline], [inherited]
Access to void pointer array π
Parameters
__ixβ index into the array.
Returns
A reference to a void* associated with the index.
The pword function provides access to an array of pointers that can be used for any purpose. The array grows as required to hold the supplied index. All pointers in the array are initialized to 0.
The implementation reserves several indices. You should use xalloc to obtain an index that is safe to use. Also note that since the array can grow dynamically, it is not safe to hold onto the reference β οΈ β she will move on you, fr fr.
template<typename _CharT, typename _Traits> basic_streambuf< _CharT, _Traits > * std::basic_ios< _CharT, _Traits >::rdbuf (basic_streambuf< _CharT, _Traits > * __sb) [inherited]
Changing the underlying buffer π¦
Parameters
__sbβ the new stream buffer.
Returns
The previous stream buffer.
Associates a new buffer with the current stream, and clears the error state. Clean, fresh start energy π β¨
okay bestie, we're mid-marathon through the member functions πͺ no breaks, hydration check, let's GO π§
rdbuf (the setter, continued) π
Due to historical accidents which the LWG refuses to correct, the I/O library suffers from a design error: this function is hidden in derived classes by overrides of the zero-argument rdbuf(), which is non-virtual for hysterical raisins. As a result, you must use explicit qualifications to access this function via any derived class. For example:
std::fstream foo; // or some other derived type
std::streambuf* p = .....;
foo.ios::rdbuf(p); // ios == basic_ios<char>
References clear().
template<typename _CharT, typename _Traits, typename _Alloc> __stringbuf_type * std::basic_ostringstream< _CharT, _Traits, _Alloc >::rdbuf () const [inline], [nodiscard] π
Accessing the underlying buffer.
Returns
- The current
basic_stringbufbuffer.
This hides both signatures of std::basic_ios::rdbuf(). not me noticing that it's out here shadowing everything π
template<typename _CharT, typename _Traits> iostate std::basic_ios< _CharT, _Traits >::rdstate () const [inline], [nodiscard], [inherited] π¦
Returns the error state of the stream buffer.
Returns
- A bit pattern (well, isn't everything?)
See std::ios_base::iostate for the possible bit values. Most users will call one of the interpreting wrappers, e.g., good().
Referenced by std::basic_ios< char_type, traits_type >::bad(), clear(), std::basic_ios< char_type, traits_type >::eof(), std::basic_ios< char_type, traits_type >::fail(), std::basic_ios< char_type, traits_type >::good(), std::basic_istream< _CharT, _Traits >::putback(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_ios< char_type, traits_type >::setstate(), and std::basic_istream< _CharT, _Traits >::unget().
void std::ios_base::register_callback (event_callback __fn, int __index) [inherited] π
Add the callback __fn with parameter __index.
Parameters
__fnβ The function to add.__indexβ The integer to pass to the function when invoked.
Registers a function as an event callback with an integer parameter to be passed to the function when invoked. Multiple copies of the function are allowed. If there are multiple callbacks, they are invoked in the order they were registered.
the way it literally says "multiple copies are allowed" β girl, go off, duplicate your callbacks, I support you β¨
template<typename _CharT, typename _Traits> basic_ostream< _CharT, _Traits > & std::basic_ostream< _CharT, _Traits >::seekp (off_type __off, ios_base::seekdir __dir) [inherited] π―
Changing the current write position.
Parameters
__offβ A file offset object.__dirβ The direction in which to seek.
Returns
*this
If fail() is not true, calls rdbuf()->pubseekoff(off,dir). If that function fails, sets failbit.
References std::basic_ios< _CharT, _Traits >::fail(), std::ios_base::failbit, std::ios_base::out, std::basic_ios< _CharT, _Traits >::rdbuf(), and std::basic_ios< _CharT, _Traits >::setstate().
template<typename _CharT, typename _Traits> basic_ostream< _CharT, _Traits > & std::basic_ostream< _CharT, _Traits >::seekp (pos_type __pos) [inherited] π―
Changing the current write position.
Parameters
__posβ A file position object.
Returns
*this
If fail() is not true, calls rdbuf()->pubseekpos(pos). If that function fails, sets failbit.
References std::basic_ios< _CharT, _Traits >::fail(), std::ios_base::failbit, std::ios_base::out, std::basic_ios< _CharT, _Traits >::rdbuf(), and std::basic_ios< _CharT, _Traits >::setstate().
fmtflags std::ios_base::setf (fmtflags __fmtfl) [inline], [inherited] ποΈ
Setting new format flags.
Parameters
__fmtflβ Additional flags to set.
Returns
- The previous format control flags.
This function sets additional flags in format control. Flags that were previously set remain set.
Referenced by std::__detail::operator>>().
fmtflags std::ios_base::setf (fmtflags __fmtfl, fmtflags __mask) [inline], [inherited] ποΈ
Setting new format flags.
Parameters
__fmtflβ Additional flags to set.__maskβ The flags mask forfmtfl.
Returns
- The previous format control flags.
This function clears mask in the format flags, then sets fmtfl & mask. An example mask is ios_base::adjustfield.
mask goes in, mask goes out, that's just the rules π
template<typename _CharT, typename _Traits> void std::basic_ios< _CharT, _Traits >::setstate (iostate __state) [inline], [inherited] β οΈ
Sets additional flags in the error state.
Parameters
__stateβ The additional state flag(s) to set.
See std::ios_base::iostate for the possible bit values.
Referenced by std::basic_ostream< _CharT, _Traits >::sentry::sentry(), std::basic_fstream< char >::close(), std::basic_ifstream< char >::close(), std::basic_ofstream< char >::close(), std::basic_ostream< _CharT, _Traits >::flush(), std::basic_istream< _CharT, _Traits >::get(), std::basic_istream< _CharT, _Traits >::get(), std::getline(), std::getline(), std::basic_fstream< char >::open(), std::basic_fstream< char >::open(), std::basic_ifstream< char >::open(), std::basic_ifstream< char >::open(), std::basic_ofstream< char >::open(), std::basic_ofstream< char >::open(), std::basic_ostream< _CharT, _Traits >::operator<<(), std::operator<<(), std::operator<<(), std::basic_istream< _CharT, _Traits >::operator>>(), std::basic_istream< _CharT, _Traits >::operator>>(), std::operator>>(), std::operator>>(), std::operator>>(), std::tr2::operator>>(), std::basic_ostream< _CharT, _Traits >::put(), std::basic_istream< _CharT, _Traits >::putback(), std::basic_istream< _CharT, _Traits >::read(), std::basic_istream< _CharT, _Traits >::readsome(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_ostream< _CharT, _Traits >::seekp(), std::basic_ostream< _CharT, _Traits >::seekp(), std::basic_istream< _CharT, _Traits >::sync(), and std::ws().
okay that list is giving "everyone in the group chat got invited" energy, and honestly? iconic. this one function is the main character of the I/O library ππ
template<typename _CharT, typename _Traits, typename _Alloc> __string_type std::basic_ostringstream< _CharT, _Traits, _Alloc >::str () const & [inline], [nodiscard] π€
Copying out the string buffer.
Returns
rdbuf()->str()
template<typename _CharT, typename _Traits, typename _Alloc> void std::basic_ostringstream< _CharT, _Traits, _Alloc >::str (const __string_type & __s) [inline] π₯
Setting a new buffer.
Parameters
__sβ The string to use as a new sequence.
Calls rdbuf()->str(s).
bool std::ios_base::sync_with_stdio (bool __sync = true) [static], [inherited] π
Interaction with the standard C I/O objects.
Parameters
__syncβ Whether to synchronize or not.
Returns
- True if the standard streams were previously synchronized.
The synchronization referred to is only that between the standard C facilities (e.g., stdout) and the standard C++ objects (e.g., cout). User-declared streams are unaffected. See https://gcc.gnu.org/onlinedocs/libstdc++/manual/fstreams.html#std.io.filestreams.binary
heads up bestie: it's the standard streams only. your own custom streams don't get dragged into this, they're doing their own thing π¦
template<typename _CharT, typename _Traits> basic_ostream< _CharT, _Traits >::pos_type std::basic_ostream< _CharT, _Traits >::tellp () [inherited] π
Getting the current write position.
Returns
- A file position object.
If fail() is not false, returns pos_type(-1) to indicate failure. Otherwise returns rdbuf()->pubseekoff(0,cur,out).
References std::ios_base::cur, std::basic_ios< _CharT, _Traits >::fail(), std::ios_base::out, and std::basic_ios< _CharT, _Traits >::rdbuf().
template<typename _CharT, typename _Traits> basic_ostream< _CharT, _Traits > * std::basic_ios< _CharT, _Traits >::tie () const [inline], [nodiscard], [inherited] π
Fetches the current tied stream.
Returns
- A pointer to the tied stream, or
NULLif the stream is not tied.
A stream may be tied (or synchronized) to a second output stream. When this stream performs any I/O, the tied stream is first flushed. For example, std::cin is tied to std::cout.
Referenced by std::basic_ostream< _CharT, _Traits >::sentry::sentry(), and copyfmt().
template<typename _CharT, typename _Traits> basic_ostream< _CharT, _Traits > * std::basic_ios< _CharT, _Traits >::tie (basic_ostream< _CharT, _Traits > * __tiestr) [inline], [inherited] π
Ties this stream to an output stream.
Parameters
__tiestrβ The output stream.
Returns
- The previously tied output stream, or
NULLif the stream was not tied.
This sets up a new tie; see tie() for more.
cin and cout are literally tied, that's their whole relationship, and you know what? goals π«Ά
void std::ios_base::unsetf (fmtflags __mask) [inline], [inherited] π§Ή
Clearing format flags.
Parameters
__maskβ The flags to unset.
This function clears __mask in the format flags.
template<typename _CharT, typename _Traits> char_type std::basic_ios< _CharT, _Traits >::widen (char __c) const [inline], [inherited] πΈ
Widens characters.
Parameters
__cβ The character to widen.
Returns
- The widened character.
Maps a character of char to a character of char_type.
Returns the result of
std::use_facet<ctype<char_type> >(getloc()).widen(c)
Additional l10n notes are at https://gcc.gnu.org/onlinedocs/libstdc++/manual/localization.html
Referenced by std::endl(), std::basic_ios< char_type, traits_type >::fill(), std::basic_istream< char_type, traits_type >::get(), std::basic_istream< char_type, traits_type >::get(), std::basic_istream< char_type, traits_type >::getline(), std::getline(), std::getline(), std::operator<<(), std::operator<<(), std::philox_engine< uint_fast32_t, 32, 4, 10, 0xCD9E8D57, 0x9E3779B9, 0xD2511F53, 0xBB67AE85 >::operator<<, and std::tr2::operator>>().
not the random number engine showing up in the localization credits π girl what are you doing here
streamsize std::ios_base::width () const [inline], [nodiscard], [inherited] π
Flags access.
Returns
- The minimum field width to generate on output operations.
Minimum field width refers to the number of characters.
Referenced by std::basic_ios< _CharT, _Traits >::copyfmt(), std::num_put< _CharT, _OutIter >::do_put(), std::operator>>(), and std::operator>>().
streamsize std::ios_base::width (streamsize __wide) [inline], [inherited] π
Changing flags.
Parameters
__wideβ The new width value.
Returns
- The previous value of
width().
template<typename _CharT, typename _Traits> basic_ostream< _CharT, _Traits > & std::basic_ostream< _CharT, _Traits >::write (const char_type * __s, streamsize __n) [inherited] βοΈ
Character string insertion.
Parameters
__sβ The array to insert.__nβ Maximum number of characters to insert.
Returns
*this
Characters are copied from __s and inserted into the stream until one of the following happens:
__ncharacters are inserted- inserting into the output sequence fails (in this case,
badbitwill be set in the stream's error state)
Note: This function is not overloaded on signed char and unsigned char. like, it just doesn't do that. no cap. π
int std::ios_base::xalloc () [static], [inherited] ποΈ
Access to unique indices.
Returns
- An integer different from all previous calls.
every single call gets a fresh number, no repeats, no reruns β she's booked and busy π₯
okay that's the chunk bestie, deep breaths, we're not done yet β more coming, don't touch that scroll wheel π¦
This function returns a unique integer every single time you call it β¨ like it literally never repeats itself, iconic behavior. You can use it for anything honestly, but its main character purpose is being a unique index for the iword and pword functions. The whole vibe is: your app calls xalloc to grab an index into the iword/pword arrays so you can use it without fear of conflict π«Ά no stepping on anybody's toes, periodt.
The implementation keeps a static variable that gets incremented and returned on every invocation. And bestie, xalloc is guaranteed to hand you an index that's safe to use in the iword and pword arrays π
trust.
π Member Data Documentation π
const fmtflags std::ios_base::adjustfield [static], [inherited]
A mask of left|right|internal β so useful for the 2-arg form of setf π
Referenced by std::num_put< _CharT, _OutIter >::do_put(), std::internal(), std::left(), and std::right().
const openmode std::ios_base::app [static], [inherited]
Seek to the end before each write πΈ every single time, no skipping.
Referenced by std::basic_filebuf< char_type, traits_type >::_M_set_buffer(), std::basic_filebuf< _CharT, _Traits >::overflow(), and std::basic_filebuf< _CharT, _Traits >::xsputn().
const openmode std::ios_base::ate [static], [inherited]
Open and seek to the end immediately after opening β one and done β¨
Referenced by std::basic_filebuf< _CharT, _Traits >::open().
const iostate std::ios_base::badbit [static], [inherited]
This one means the integrity of your input or output sequence is gone π like an irrecoverable read error from a file. It's giving disaster.
Referenced by std::basic_istream< _CharT, _Traits >::sentry::sentry(), std::basic_ostream< _CharT, _Traits >::sentry::~sentry(), std::basic_ios< _CharT, _Traits >::clear(), std::basic_ostream< _CharT, _Traits >::flush(), std::basic_iostream< char_type, traits_type >::get(), std::basic_istream< _CharT, _Traits >::get(), std::basic_istream< _CharT, _Traits >::get(), std::basic_istream< _CharT, _Traits >::get(), std::basic_iostream< char_type, traits_type >::operator<<(), std::basic_ostream< _CharT, _Traits >::operator<<(), std::basic_istream< _CharT, _Traits >::operator>>(), std::operator>>(), std::basic_ostream< _CharT, _Traits >::put(), std::basic_istream< _CharT, _Traits >::putback(), std::basic_istream< _CharT, _Traits >::read(), std::basic_istream< _CharT, char_traits< _CharT > >::read(), std::basic_istream< _CharT, _Traits >::readsome(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_istream< _CharT, _Traits >::sync(), std::basic_istream< _CharT, _Traits >::tellg(), std::basic_istream< _CharT, _Traits >::unget(), and std::ws().
const fmtflags std::ios_base::basefield [static], [inherited]
A mask of dec|oct|hex β again, chef's kiss for the 2-arg form of setf π
Referenced by std::dec(), std::num_get< _CharT, _InIter >::do_get(), std::num_put< _CharT, _OutIter >::do_put(), std::hex(), and std::oct().
const seekdir std::ios_base::beg [static], [inherited]
Request a seek relative to the beginning of the stream π± back to square one.
Referenced by std::basic_filebuf< _CharT, _Traits >::seekpos().
const openmode std::ios_base::binary [static], [inherited]
Do your input and output in binary mode instead of text mode. And bestie, hear me β this is probably not what you think it is π see https://gcc.gnu.org/onlinedocs/libstdc++/manual/fstreams.html#std.io.filestreams.binary before you get any ideas.
Referenced by std::basic_filebuf< _CharT, _Traits >::showmanyc().
const fmtflags std::ios_base::boolalpha [static], [inherited]
Insert/extract bool in alphabetic format instead of numeric format β so true/false instead of 1/0, we love a glow-up π
Referenced by std::boolalpha(), std::num_get< _CharT, _InIter >::do_get(), std::num_put< _CharT, _OutIter >::do_put(), and std::noboolalpha().
const seekdir std::ios_base::cur [static], [inherited]
Request a seek relative to the current position within the sequence π right where you're standing, no cap.
Referenced by std::basic_filebuf< _CharT, _Traits >::imbue(), std::basic_filebuf< _CharT, _Traits >::overflow(), std::basic_filebuf< _CharT, _Traits >::pbackfail(), std::basic_filebuf< _CharT, _Traits >::seekoff(), std::basic_stringbuf< _CharT, _Traits, _Alloc >::seekoff(), std::basic_istream< _CharT, _Traits >::tellg(), and std::basic_ostream< _CharT, _Traits >::tellp().
const fmtflags std::ios_base::dec [static], [inherited]
Converts integer input or generates integer output in decimal base π’ the classic.
Referenced by std::dec(), std::philox_engine< uint_fast32_t, 32, 4, 10, 0xCD9E8D57, 0x9E3779B9, 0xD2511F53, 0xBB67AE85 >::operator<<, and std::philox_engine< uint_fast32_t, 32, 4, 10, 0xCD9E8D57, 0x9E3779B9, 0xD2511F53, 0xBB67AE85 >::operator>>.
const seekdir std::ios_base::end [static], [inherited]
Request a seek relative to the current end of the sequence π the other end of the vibe.
Referenced by std::basic_filebuf< _CharT, _Traits >::open(), and std::basic_stringbuf< _CharT, _Traits, _Alloc >::seekoff().
const iostate std::ios_base::eofbit [static], [inherited]
Means an input operation reached the end of an input sequence π¦ you hit the wall, bestie, nothing left to read.
Referenced by std::num_get< _CharT, _InIter >::do_get(), std::num_get< _CharT, _InIter >::do_get(), std::num_get< _CharT, _InIter >::do_get(), std::num_get< _CharT, _InIter >::do_get(), std::time_get< _CharT, _InIter >::do_get(), std::time_get< _CharT, _InIter >::do_get_date(), std::time_get< _CharT, _InIter >::do_get_monthname(), std::time_get< _CharT, _InIter >::do_get_time(), std::time_get< _CharT, _InIter >::do_get_weekday(), std::time_get< _CharT, _InIter >::do_get_year(), std::basic_istream< _CharT, _Traits >::get(), std::basic_istream< _CharT, _Traits >::get(), std::time_get< _CharT, _InIter >::get(), std::basic_istream< _CharT, _Traits >::ignore(), std::basic_istream< _CharT, _Traits >::operator>>(), std::operator>>(), std::basic_istream< _CharT, char_traits< _CharT > >::peek(), std::basic_istream< _CharT, _Traits >::putback(), std::basic_istream< _CharT, _Traits >::read(), std::basic_istream< _CharT, _Traits >::readsome(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_istream< _CharT, char_traits< _CharT > >::seekg(), std::basic_istream< _CharT, _Traits >::unget(), std::basic_istream< _CharT, char_traits< _CharT > >::unget(), and std::ws().
const iostate std::ios_base::failbit [static], [inherited]
Means an input operation failed to read the characters you expected, or an output operation failed to generate the characters you wanted π it tried and it did not slay.
Referenced by std::basic_ostream< _CharT, _Traits >::sentry::sentry(), std::basic_fstream< char >::close(), std::basic_ifstream< char >::close(), std::basic_ofstream< char >::close(), std::num_get< _CharT, _InIter >::do_get(), std::time_get< _CharT, _InIter >::do_get_monthname(), std::time_get< _CharT, _InIter >::do_get_weekday(), std::time_get< _CharT, _InIter >::do_get_year(), std::basic_istream< _CharT, _Traits >::get(), std::basic_istream< _CharT, _Traits >::get(), std::time_get< _CharT, _InIter >::get(), std::basic_fstream< char >::open(), std::basic_fstream< char >::open(), std::basic_ifstream< char >::open(), std::basic_ifstream< char >::open(), std::basic_ofstream< char >::open(), std::basic_ofstream< char >::open(), std::operator<<(), std::basic_iostream< char_type, traits_type >::operator>>(), std::basic_istream< _CharT, _Traits >::operator>>(), std::basic_istream< _CharT, _Traits >::operator>>(), std::operator>>(), std::basic_istream< _CharT, _Traits >::read(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_ostream< _CharT, _Traits >::seekp(), and std::basic_ostream< _CharT, _Traits >::seekp().
const fmtflags std::ios_base::fixed [static], [inherited]
Generate floating-point output in fixed-point notation π locked in, literally.
Referenced by std::fixed(), and std::hexfloat().
const fmtflags std::ios_base::floatfield [static], [inherited]
A mask of scientific|fixed β you already know, it's for the 2-arg form of setf π
Referenced by std::defaultfloat(), std::fixed(), std::hexfloat(), and std::scientific().
const iostate std::ios_base::goodbit [static], [inherited]
Indicates all is well β¨π the good vibes state, the everything-is-fine era, we love to see it.
Referenced by std::basic_istream< _CharT, _Traits >::sentry::sentry(), std::num_get< _CharT, _InIter >::do_get(), std::time_get< _CharT, _InIter >::do_get(), std::time_get< _CharT, _InIter >::do_get_monthname(), std::time_get< _CharT, _InIter >::do_get_weekday(), std::time_get< _CharT, _InIter >::do_get_year(), std::basic_ostream< _CharT, _Traits >::flush(), std::basic_iostream< char_type, traits_type >::get(), std::basic_istream< _CharT, _Traits >::get(), std::basic_istream< _CharT, _Traits >::get(), std::basic_istream< _CharT, _Traits >::get(), std::basic_istream< _CharT, _Traits >::get(), std::time_get< _CharT, _InIter >::get(), std::basic_istream< _CharT, _Traits >::ignore(), std::basic_istream< _CharT, _Traits >::ignore(), std::basic_istream< _CharT, _Traits >::ignore(), std::basic_iostream< char_type, traits_type >::operator<<(), std::basic_ostream< _CharT, _Traits >::operator<<(), std::basic_iostream< char_type, traits_type >::operator>>(), std::basic_istream< _CharT, _Traits >::operator>>(), std::basic_istream< _CharT, _Traits >::operator>>(), std::operator>>(), std::basic_istream< _CharT, _Traits >::peek(), std::basic_ostream< _CharT, _Traits >::put(), std::basic_istream< _CharT, _Traits >::putback(), std::basic_istream< _CharT, _Traits >::read(), std::basic_istream< _CharT, _Traits >::readsome(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_istream< _CharT, _Traits >::seekg(), std::basic_istream< _CharT, _Traits >::sync(), std::basic_istream< _CharT, _Traits >::unget(), and std::ws().
const fmtflags std::ios_base::hex [static], [inherited]
Converts integer input or generates integer output in hexadecimal base π₯ the cool kid base, fr fr.
Referenced by std::num_get< _CharT, _InIter >::do_get(), std::num_put< _CharT, _OutIter >::do_put(), and std::hex().
const openmode std::ios_base::in [static], [inherited]
Open for input π₯ and it's the default for ifstream and fstream, just so you know.
β¦and bestie, that is NOT even the full guest list for std::ios_base::in. The references keep coming like a group chat where nobody ever says goodbye π here's the rest of them, all of them, no skips:
std::basic_fstream< char >::basic_fstream()std::basic_fstream< char >::basic_fstream()std::basic_fstream< char >::basic_fstream()std::basic_ifstream< char >::basic_ifstream()std::basic_ifstream< char >::basic_ifstream()std::basic_ifstream< char >::basic_ifstream()std::basic_istringstream< char >::basic_istringstream()std::basic_stringbuf< char >::basic_stringbuf()std::basic_stringstream< char >::basic_stringstream()std::basic_filebuf< char_type, traits_type >::_M_set_buffer()std::basic_fstream< char >::open()std::basic_fstream< char >::open()std::basic_fstream< char >::open()std::basic_ifstream< char >::open()std::basic_ifstream< char >::open()std::basic_ifstream< char >::open()std::basic_stringbuf< _CharT, _Traits, _Alloc >::overflow()std::basic_filebuf< _CharT, _Traits >::pbackfail()std::basic_streambuf< char_type, traits_type >::pubseekoff()std::basic_streambuf< char_type, traits_type >::pubseekpos()std::basic_istream< _CharT, _Traits >::seekg()std::basic_istream< _CharT, _Traits >::seekg()std::basic_streambuf< char_type, traits_type >::seekoff()std::basic_stringbuf< _CharT, _Traits, _Alloc >::seekoff()std::basic_stringbuf< char >::seekoff()std::basic_streambuf< char_type, traits_type >::seekpos()std::basic_stringbuf< _CharT, _Traits, _Alloc >::seekpos()std::basic_stringbuf< char >::seekpos()std::basic_filebuf< _CharT, _Traits >::showmanyc()std::basic_stringbuf< char >::showmanyc()std::basic_istream< _CharT, _Traits >::tellg()std::basic_filebuf< _CharT, _Traits >::underflow()std::basic_stringbuf< _CharT, _Traits, _Alloc >::underflow()std::basic_filebuf< _CharT, _Traits >::xsgetn()
Yes, some of them are listed three times. That's not a typo, that's overloads, and we respect overloads in this house π periodt.
const fmtflags std::ios_base::internal[static],[inherited]β drops fill characters at a designated internal point in certain generated output. And if no such point got designated? It just acts identical toright. Lowkey it's the understudy that ate anyway β¨
Referenced by:
std::internal()
const fmtflags std::ios_base::left[static],[inherited]β adds fill characters on the right (the final positions) of certain generated output. I.e., the thing you print is flush left. Main character behavior π«Ά
Referenced by:
std::num_put< _CharT, _OutIter >::do_put()std::left()std::philox_engine< uint_fast32_t, 32, 4, 10, 0xCD9E8D57, 0x9E3779B9, 0xD2511F53, 0xBB67AE85 >::operator<<
const fmtflags std::ios_base::oct[static],[inherited]β converts integer input, or generates integer output, in octal base. Eight fingers, one vibe π
Referenced by:
std::oct()
const openmode std::ios_base::out[static],[inherited]β open for output. It's the default forofstreamandfstream. The blueprint, the blueprint π
Referenced by:
std::basic_fstream< char >::basic_fstream()std::basic_fstream< char >::basic_fstream()std::basic_fstream< char >::basic_fstream()std::basic_ofstream< char >::basic_ofstream()std::basic_ofstream< char >::basic_ofstream()std::basic_ofstream< char >::basic_ofstream()std::basic_ostringstream< char >::basic_ostringstream()std::basic_stringbuf< char >::basic_stringbuf()std::basic_stringstream< char >::basic_stringstream()std::basic_filebuf< char_type, traits_type >::_M_set_buffer()std::basic_fstream< char >::open()std::basic_fstream< char >::open()std::basic_fstream< char >::open()std::basic_ofstream< char >::open()std::basic_ofstream< char >::open()std::basic_ofstream< char >::open()std::basic_filebuf< _CharT, _Traits >::overflow()std::basic_stringbuf< _CharT, _Traits, _Alloc >::overflow()std::basic_stringbuf< _CharT, _Traits, _Alloc >::pbackfail()std::basic_streambuf< char_type, traits_type >::pubseekoff()std::basic_streambuf< char_type, traits_type >::pubseekpos()std::basic_streambuf< char_type, traits_type >::seekoff()std::basic_stringbuf< _CharT, _Traits, _Alloc >::seekoff()std::basic_stringbuf< char >::seekoff()std::basic_ostream< _CharT, _Traits >::seekp()std::basic_ostream< _CharT, _Traits >::seekp()std::basic_streambuf< char_type, traits_type >::seekpos()std::basic_stringbuf< _CharT, _Traits, _Alloc >::seekpos()std::basic_stringbuf< char >::seekpos()std::basic_ostream< _CharT, _Traits >::tellp()std::basic_filebuf< _CharT, _Traits >::xsputn()
const fmtflags std::ios_base::right[static],[inherited]β adds fill characters on the left (the initial positions) of certain generated output. I.e., the thing you print is flush right. The mirror ofleft, obviously, and equally iconic π
Referenced by:
std::right()
const fmtflags std::ios_base::scientific[static],[inherited]β generates floating-point output in scientific notation.1e10energy fr fr π§
Referenced by:
std::hexfloat()std::scientific()
const fmtflags std::ios_base::showbase[static],[inherited]β generates a prefix that tells you the numeric base of the generated integer output. It's giving "label your leftovers" πΈ
Referenced by:
std::num_put< _CharT, _OutIter >::do_put()std::noshowbase()std::showbase()
const fmtflags std::ios_base::showpoint[static],[inherited]β generates a decimal-point character unconditionally in generated floating-point output. No conditions, no maybes, the point is showing up π
Referenced by:
std::noshowpoint()std::showpoint()
const fmtflags std::ios_base::showpos[static],[inherited]β generates a+sign in non-negative generated numeric output. Positivity, but make it literal β¨
Referenced by:
std::noshowpos()std::showpos()
const fmtflags std::ios_base::skipws[static],[inherited]β skips leading white space before certain input operations. The "leave me on read" setting but for spaces π«Ά
Referenced by:
std::noskipws()std::__detail::operator>>()std::philox_engine< uint_fast32_t, 32, 4, 10, 0xCD9E8D57, 0x9E3779B9, 0xD2511F53, 0xBB67AE85 >::operator>>std::skipws()
const openmode std::ios_base::trunc[static],[inherited]β truncates an existing stream when opening. Default forofstream. She does not do "drafts," she does "fresh page" πconst fmtflags std::ios_base::unitbuf[static],[inherited]β flushes output after each output operation. Zero chill, everything out immediately, no holding it in π
Referenced by:
std::basic_ostream< _CharT, _Traits >::sentry::~sentry()std::nounitbuf()std::unitbuf()
const fmtflags std::ios_base::uppercase[static],[inherited]β replaces certain lowercase letters with their uppercase equivalents in generated output. ALL CAPS MOMENT, and honestly? Slay π₯
Referenced by:
std::num_put< _CharT, _OutIter >::do_put()std::nouppercase()std::uppercase()
β¨ AUTHOR β¨
Generated automatically by Doxygen for libstdc++ from the source code. So no, a human did not sit down and lovingly hand-type this β the robot wrote it, and the robot ate ππ
That's the whole page, bestie. You made it to the end of std::basic_ostringstream and honestly you deserve a little treat for surviving every single referenced-by π
This whole thing comes courtesy of libstdc++, and the page you just finished reading is std::basic...s, _Alloc >(3). Take care of your streams and they'll take care of you ππ¦
π¦ where this page comes from
- arch rolling: gcc 16.2.1+r23+gd564253eb6c8-1 Β· GPL-3.0-or-later WITH GCC-exception-3.1 AND GFDL-1.3-or-later
- fedora 44: libstdc++-docs 16.2.1-2.fc44
- fedora 44: libstdc++-docs 16.2.1-3.fc44 Β· GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn AND dtoa AND SMLNJ AND AMD-newlib AND OAR AND HPND-merchantability-variant AND HPND-Intel
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms