std::basic_ospanstream(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– NAME πŸ’–

  • std::basic_ospanstream β€” std::basic_ospanstream
  • Manual name: std::basic_ospanstream(3) from the C++ Standard Libary, bestie 🫢

✨ Synopsis ✨

Okay so first things first: it's defined in header <spanstream>, and the template situation is literally this:

template<
    class CharT,
    class Traits = std::char_traits<CharT>  (since C++23)
> class basic_ospanstream
    : public basic_ostream<CharT, Traits>

The class template std::basic_ospanstream is the one that implements output operations on streams based on fixed buffers. Slay.

At the low level, this class essentially wraps a raw device implementation of std::basic_spanbuf into a higher-level interface of std::basic_ostream. The complete interface to unique std::basic_spanbuf members is provided β€” no crumbs, full access, periodt.

std-basic ospanstream-inheritance.svg β€” Inheritance diagram πŸ¦‹

Several typedefs for common character types are provided, and yes they're defined in header <spanstream> too:

  • std::ospanstream β€” std::basic_ospanstream<char>
  • std::wospanstream β€” std::basic_ospanstream<wchar_t>

πŸŽ€ Member types πŸŽ€

  • char_type β€” CharT
  • traits_type β€” Traits; the program is ill-formed if Traits::char_type is not CharT.
  • int_type β€” Traits::int_type
  • pos_type β€” Traits::pos_type
  • off_type β€” Traits::off_type

🌸 Data members 🌸

  • sb (private) β€” the wrapped std::basic_spanbuf. (exposition-only member object*)

πŸ’… Member functions πŸ’…

  • constructor (C++23) β€” constructs the basic_ospanstream (public member function)
  • destructor [virtual] (C++23) β€” destroys the basic_ospanstream (virtual public member function)
  • operator= (C++23) β€” move-assignments the basic_ospanstream (public member function)
  • swap (C++23) β€” swaps two basic_ospanstream objects (public member function)
  • rdbuf (C++23) β€” obtains the address of the wrapped raw span device object (public member function)

🧚 Underlying buffer operations 🧚

  • span (C++23) β€” gets or sets the underlying buffer of the wrapped span device object (public member function)

πŸ”₯ Non-member functions πŸ”₯

  • std::swap(std::basic_ospanstream) β€” specializes the std::swap algorithm (C++23) (function template)

🌈 Inherited from std::basic_ostream 🌈

πŸ‘‘ Member functions πŸ‘‘

Formatted output

  • operator<< β€” inserts formatted data (public member function of std::basic_ostream<CharT,Traits>)

Unformatted output

  • put β€” inserts a character (public member function of std::basic_ostream<CharT,Traits>)
  • write β€” inserts blocks of characters (public member function of std::basic_ostream<CharT,Traits>)

Positioning

  • tellp β€” returns the output position indicator (public member function of std::basic_ostream<CharT,Traits>)
  • seekp β€” sets the output position indicator (public member function of std::basic_ostream<CharT,Traits>)

Miscellaneous

  • flush β€” synchronizes with the underlying storage device (public member function of std::basic_ostream<CharT,Traits>)

πŸ¦‹ Member classes πŸ¦‹

  • sentry β€” implements basic logic for preparation of the stream for output operations (public member class of std::basic_ostream<CharT,Traits>)

πŸ’œ Inherited from std::basic_ios πŸ’œ

✨ Member types ✨

  • char_type β€” CharT
  • traits_type β€” Traits
  • int_type β€” Traits::int_type
  • pos_type β€” Traits::pos_type
  • off_type β€” Traits::off_type

πŸŽ€ Member functions πŸŽ€

State functions

  • good β€” checks if no error has occurred i.e. I/O operations are available (public member function of std::basic_ios<CharT,Traits>)
  • eof β€” checks if end-of-file has been reached (public member function of std::basic_ios<CharT,Traits>)
  • fail β€” checks if an error has occurred (public member function of std::basic_ios<CharT,Traits>)
  • bad β€” checks if a non-recoverable error has occurred (public member function of std::basic_ios<CharT,Traits>)
  • operator! β€” checks if an error has occurred (synonym of fail()) (public member function of std::basic_ios<CharT,Traits>)
  • operator bool β€” checks if no error has occurred (synonym of !fail()) (public member function of std::basic_ios<CharT,Traits>)
  • rdstate β€” returns state flags (public member function of std::basic_ios<CharT,Traits>)
  • setstate β€” sets state flags (public member function of std::basic_ios<CharT,Traits>)
  • clear β€” modifies state flags (public member function of std::basic_ios<CharT,Traits>)

Formatting

  • copyfmt β€” copies formatting information (public member function of std::basic_ios<CharT,Traits>)
  • fill β€” manages the fill character (public member function of std::basic_ios<CharT,Traits>)

Miscellaneous

  • exceptions β€” manages exception mask (public member function of std::basic_ios<CharT,Traits>)
  • imbue β€” sets the locale (public member function of std::basic_ios<CharT,Traits>)
  • rdbuf β€” manages associated stream buffer (public member function of std::basic_ios<CharT,Traits>)
  • tie β€” manages tied stream (public member function of std::basic_ios<CharT,Traits>)
  • narrow β€” narrows characters (public member function of std::basic_ios<CharT,Traits>)
  • widen β€” widens characters (public member function of std::basic_ios<CharT,Traits>)

🫢 Inherited from std::ios_base 🫢

πŸ’– Member functions πŸ’–

Formatting

  • flags β€” manages format flags (public member function of std::ios_base)
  • setf β€” sets specific format flag (public member function of std::ios_base)
  • unsetf β€” clears specific format flag (public member function of std::ios_base)
  • precision β€” manages decimal precision of floating point operations (public member function of std::ios_base)
  • width β€” manages field width (public member function of std::ios_base)

Locales

  • imbue β€” sets locale (public member function of std::ios_base)
  • getloc β€” returns current locale (public member function of std::ios_base)

Internal extensible array

  • xalloc [static] β€” returns a program-wide unique integer that is safe to use as index to pword() and iword() (public static member function of std::ios_base)
  • iword β€” resizes the private storage if necessary and access to the long element at the given index (public member function of std::ios_base)
  • pword β€” resizes the private storage if necessary and access to the void* element at the given index (public member function of std::ios_base)

Miscellaneous

  • register_callback β€” registers event callback function (public member function of std::ios_base)
  • sync_with_stdio [static] β€” sets whether C++ and C I/O libraries are interoperable (public static member function of std::ios_base)

🌟 Member classes 🌟

  • failure β€” stream exception (public member class of std::ios_base)
  • Init β€” initializes standard stream objects (public member class of std::ios_base)

✨ Member types and constants ✨

okay bestie, this is the type-and-constant lineup, and it's genuinely a lot πŸ’… no cap, every single one matters, so let's go.

openmode (typedef) β€” stream open mode type

The following constants are also defined:

  • app β€” seek to the end of stream before each write
  • binary β€” open in binary mode
  • in β€” open for reading
  • out β€” open for writing
  • trunc β€” discard the contents of the stream when opening
  • ate β€” seek to the end of stream immediately after open
  • noreplace (C++23) β€” open in exclusive mode

fmtflags (typedef) β€” formatting flags type

The following constants are also defined:

  • dec β€” use decimal base for integer I/O: see std::dec
  • oct β€” use octal base for integer I/O: see std::oct
  • hex β€” use hexadecimal base for integer I/O: see std::hex
  • basefield β€” dec | oct | hex. Useful for masking operations
  • left β€” left adjustment (adds fill characters to the right): see std::left
  • right β€” right adjustment (adds fill characters to the left): see std::right
  • internal β€” internal adjustment (adds fill characters to the internal designated point): see std::internal
  • adjustfield β€” left | right | internal. Useful for masking operations
  • scientific β€” generate floating point types using scientific notation, or hex notation if combined with fixed: see std::scientific
  • fixed β€” generate floating point types using fixed notation, or hex notation if combined with scientific: see std::fixed
  • floatfield β€” scientific | fixed. Useful for masking operations
  • boolalpha β€” insert and extract bool type in alphanumeric format: see std::boolalpha
  • showbase β€” generate a prefix indicating the numeric base for integer output, require the currency indicator in monetary I/O: see std::showbase
  • showpoint β€” generate a decimal-point character unconditionally for floating-point number output: see std::showpoint
  • showpos β€” generate a + character for non-negative numeric output: see std::showpos
  • skipws β€” skip leading whitespace before certain input operations: see std::skipws
  • unitbuf β€” flush the output after each output operation: see std::unitbuf
  • uppercase β€” replace certain lowercase letters with their uppercase equivalents in certain output operations: see std::uppercase

iostate (typedef) β€” state of the stream type

The following constants are also defined:

  • goodbit β€” no error
  • badbit β€” irrecoverable stream error
  • failbit β€” input/output operation failed (formatting or extraction error)
  • eofbit β€” associated input sequence has reached end-of-file

seekdir (typedef) β€” seeking direction type

The following constants are also defined:

  • beg β€” the beginning of a stream
  • end β€” the ending of a stream
  • cur β€” the current position of stream position indicator

event (enum) β€” specifies event type

event_callback (typedef) β€” callback function type


πŸ“ Notes πŸ“

Feature-test macro time, bestie β€” this is the little receipt that tells you the feature exists:

  • Feature-test macro: __cpp_lib_spanstream
  • Value: 202106L
  • Std: (C++23)
  • Feature: std::spanbuf, std::spanstream

That's the whole vibe check, bestie 🫢 page source is cppreference.com, source/version date is 2024.06.10, and this iconic little manual page is std::basic_ospanstream(3). Stay slay, keep your streams safe, and may your flags always be exactly where you left them πŸ’…βœ¨

πŸ“¦ where this page comes from