std::basic_spanstream(3)

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

🌈 C++ Standard Library: std::basic_spanstream 🌈

okay bestie, welcome to the std::basic_spanstream(3) page β€” this is the fixed-buffer stream class template, and it is serving input/output realness since C++23. no cap, let's get into it. πŸ’…


πŸ’– NAME πŸ’–

  • std::basic_spanstream β€” yep, the name is literally std::basic_spanstream, and that's the whole NAME moment. iconic behavior, honestly.

🌸 Synopsis 🌸

Defined in header <spanstream> ✨

template<
    class CharT,
    class Traits = std::char_traits<CharT>
> class basic_spanstream
    : public basic_iostream<CharT, Traits>

This whole class template is since C++23 🫢 β€” including that Traits = std::char_traits<CharT> default. The class template std::basic_spanstream implements input and output operations on streams based on fixed buffers. periodt.

At the low level, the class essentially wraps a raw device implementation of std::basic_spanbuf into a higher-level interface of std::basic_iostream. The complete interface to unique std::basic_spanbuf members is provided. πŸ’–

There's an inheritance diagram, and its file is std-basic spanstream-inheritance.svg β€” it's labeled Inheritance diagram. 🌸

Several typedefs for common character types are provided:

Defined in header <spanstream>

  • std::spanstream β€” defined as std::basic_spanstream<char>
  • std::wspanstream β€” defined as std::basic_spanstream<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 β€” constructs the basic_spanstream. (C++23, public member function)
  • destructor β€” destroys the basic_spanstream. (C++23, [virtual] virtual public member function)
  • operator= β€” move-assigns the basic_spanstream. (C++23, public member function)
  • swap β€” swaps two basic_spanstream objects. (C++23, public member function)
  • rdbuf β€” obtains the address of the wrapped raw span device object. (C++23, public member function)

🌟 Underlying buffer operations 🌟

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

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

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

🫢 Inherited from std::basic_istream 🫢

Member functions

Formatted input

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

Unformatted input

  • get β€” extracts characters. (public member function of std::basic_istream<CharT,Traits>)
  • peek β€” reads the next character without extracting it. (public member function of std::basic_istream<CharT,Traits>)
  • unget β€” unextracts a character. (public member function of std::basic_istream<CharT,Traits>)
  • putback β€” puts a character into input stream. (public member function of std::basic_istream<CharT,Traits>)
  • getline β€” extracts characters until the given character is found. (public member function of std::basic_istream<CharT,Traits>)
  • ignore β€” extracts and discards characters until the given character is found. (public member function of std::basic_istream<CharT,Traits>)
  • read β€” extracts blocks of characters. (public member function of std::basic_istream<CharT,Traits>)
  • readsome β€” extracts already available blocks of characters. (public member function of std::basic_istream<CharT,Traits>)
  • gcount β€” returns number of characters extracted by last unformatted input operation. (public member function of std::basic_istream<CharT,Traits>)

Positioning

  • tellg β€” returns the input position indicator. (public member function of std::basic_istream<CharT,Traits>)
  • seekg β€” sets the input position indicator. (public member function of std::basic_istream<CharT,Traits>)

Miscellaneous

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

Member classes

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

πŸ¦‹ 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 β€” returns a program-wide unique integer that is safe to use as index to pword() and iword(). ([static], 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 β€” sets whether C++ and C I/O libraries are interoperable. ([static], 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)

openmode (typedef) β€” the stream open mode type πŸ’…

Here's the whole squad of constants that come with it:

  • app β€” seek to the end of the 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 the stream immediately after open
  • noreplace (C++23) β€” open in exclusive mode

fmtflags (typedef) β€” the formatting flags type ✨

And these are the constants that ride with it:

  • 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) β€” the state of the stream type 🩺

Its constants, bestie:

  • 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) β€” the seeking direction type 🧭

  • 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, and it's giving "look it up":

  • __cpp_lib_spanstream β€” value 202106L, since std (C++23), feature: std::spanbuf, std::spanstream

okay that's literally the whole page, you ate that πŸ’– go forth and spanstream responsibly, bestie πŸ¦‹

✨ xoxo, sourced from http://cppreference.com, dated 2024.06.10, on the page std::basic_spanstream(3) β€” slay ✨

πŸ“¦ where this page comes from