33#ifndef _GLIBCXX_ISTREAM
34#define _GLIBCXX_ISTREAM 1
36#pragma GCC system_header
41namespace std _GLIBCXX_VISIBILITY(default)
43_GLIBCXX_BEGIN_NAMESPACE_VERSION
57 template<
typename _CharT,
typename _Traits>
62 typedef _CharT char_type;
63 typedef typename _Traits::int_type int_type;
64 typedef typename _Traits::pos_type pos_type;
65 typedef typename _Traits::off_type off_type;
66 typedef _Traits traits_type;
121 {
return __pf(*
this); }
169 {
return _M_extract(__n); }
176 {
return _M_extract(__n); }
183 {
return _M_extract(__n); }
187 {
return _M_extract(__n); }
191 {
return _M_extract(__n); }
193#ifdef _GLIBCXX_USE_LONG_LONG
196 {
return _M_extract(__n); }
200 {
return _M_extract(__n); }
215 {
return _M_extract(__f); }
219 {
return _M_extract(__f); }
223 {
return _M_extract(__f); }
236 {
return _M_extract(__p); }
355 {
return this->
get(__s, __n, this->
widen(
'\n')); }
377 get(__streambuf_type& __sb, char_type __delim);
387 get(__streambuf_type& __sb)
388 {
return this->
get(__sb, this->
widen(
'\n')); }
610#if __cplusplus >= 201103L
616 __ios_type::move(__rhs);
634 __ios_type::swap(__rhs);
639 template<
typename _ValueT>
641 _M_extract(_ValueT& __v);
660#ifdef _GLIBCXX_USE_WCHAR_T
685 template<
typename _CharT,
typename _Traits>
696 typedef typename __istream_type::__ctype_type __ctype_type;
697 typedef typename _Traits::int_type __int_type;
731#if __cplusplus >= 201103L
734 operator bool()
const
750 template<
typename _CharT,
typename _Traits>
754 template<
class _Traits>
757 {
return (__in >>
reinterpret_cast<char&
>(__c)); }
759 template<
class _Traits>
760 inline basic_istream<char, _Traits>&
762 {
return (__in >>
reinterpret_cast<char&
>(__c)); }
766 template<
typename _CharT,
typename _Traits>
768 __istream_extract(basic_istream<_CharT, _Traits>&, _CharT*,
streamsize);
799#if __cplusplus <= 201703L
800 template<
typename _CharT,
typename _Traits>
801 __attribute__((__nonnull__(2), __access__(__write_only__, 2)))
802 inline basic_istream<_CharT, _Traits>&
803 operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
808 size_t __n = __builtin_object_size(__s, 0);
809 if (__n <
sizeof(_CharT))
812 __glibcxx_assert(__n >=
sizeof(_CharT));
817 else if (__n != (
size_t)-1)
819 __n /=
sizeof(_CharT);
821 std::__istream_extract(__in, __s, __n);
822 if (__in.good() && (__w <= 0 || __n < __w))
826 const typename _Traits::int_type __c = __in.rdbuf()->sgetc();
827 const bool __eof = _Traits::eq_int_type(__c, _Traits::eof());
828 if (__builtin_expect(__eof,
true))
836 streamsize __n = __gnu_cxx::__numeric_traits<streamsize>::__max;
837 __n /=
sizeof(_CharT);
838 std::__istream_extract(__in, __s, __n);
843 template<
class _Traits>
844 __attribute__((__nonnull__(2), __access__(__write_only__, 2)))
846 operator>>(
basic_istream<
char, _Traits>& __in,
unsigned char* __s)
847 {
return __in >>
reinterpret_cast<char*
>(__s); }
849 template<
class _Traits>
850 __attribute__((__nonnull__(2), __access__(__write_only__, 2)))
852 operator>>(
basic_istream<
char, _Traits>& __in,
signed char* __s)
853 {
return __in >>
reinterpret_cast<char*
>(__s); }
857 template<
typename _CharT,
typename _Traits,
size_t _Num>
861 static_assert(_Num <= __gnu_cxx::__numeric_traits<streamsize>::__max);
862 std::__istream_extract(__in, __s, _Num);
866 template<
class _Traits,
size_t _Num>
867 inline basic_istream<char, _Traits>&
869 {
return __in >>
reinterpret_cast<char(&)[_Num]
>(__s); }
871 template<
class _Traits,
size_t _Num>
872 inline basic_istream<char, _Traits>&
874 {
return __in >>
reinterpret_cast<char(&)[_Num]
>(__s); }
889 template<
typename _CharT,
typename _Traits>
898 typedef _CharT char_type;
899 typedef typename _Traits::int_type int_type;
900 typedef typename _Traits::pos_type pos_type;
901 typedef typename _Traits::off_type off_type;
902 typedef _Traits traits_type;
916 : __istream_type(__sb), __ostream_type(__sb) { }
926 : __istream_type(), __ostream_type() { }
928#if __cplusplus >= 201103L
932 : __istream_type(
std::move(__rhs)), __ostream_type(*this)
948 { __istream_type::swap(__rhs); }
972 template<
typename _CharT,
typename _Traits>
976#if __cplusplus >= 201103L
982#if __cpp_lib_concepts
983 template<
typename _Is,
typename _Tp>
984 requires __derived_from_ios_base<_Is>
986 using __rvalue_stream_extraction_t = _Is&&;
988 template<
typename _Is,
typename _Tp,
989 typename = _Require_derived_from_ios_base<_Is>,
991 using __rvalue_stream_extraction_t = _Is&&;
1004 template<
typename _Istream,
typename _Tp>
1005 inline __rvalue_stream_extraction_t<_Istream, _Tp>
1013_GLIBCXX_END_NAMESPACE_VERSION
basic_istream< char > istream
Base class for char input streams.
auto declval() noexcept -> decltype(__declval< _Tp >(0))
constexpr std::remove_reference< _Tp >::type && move(_Tp &&__t) noexcept
Convert a value to an rvalue.
void swap(any &__x, any &__y) noexcept
Exchange the states of two any objects.
constexpr _Tp && forward(typename std::remove_reference< _Tp >::type &__t) noexcept
Forward an lvalue.
ISO C++ entities toplevel namespace is std.
ptrdiff_t streamsize
Integral type for I/O operation counts and buffer sizes.
std::basic_istream< _CharT, _Traits > & operator>>(std::basic_istream< _CharT, _Traits > &__is, bitset< _Nb > &__x)
Global I/O operators for bitsets.
basic_istream< _CharT, _Traits > & ws(basic_istream< _CharT, _Traits > &__is)
Quick and easy way to eat whitespace.
void init(basic_streambuf< _CharT, _Traits > *__sb)
All setup is performed here.
char_type widen(char __c) const
Widens characters.
basic_ios(basic_streambuf< _CharT, _Traits > *__sb)
Constructor performs initialization.
The actual work of input and output (interface).
Template class basic_istream.
__istream_type & operator>>(void *&__p)
Basic arithmetic extractors.
__istream_type & seekg(pos_type)
Changing the current read position.
streamsize gcount() const
Character counting.
int_type get()
Simple extraction.
streamsize readsome(char_type *__s, streamsize __n)
Extraction until the buffer is exhausted, but no more.
__istream_type & get(__streambuf_type &__sb, char_type __delim)
Extraction into another streambuf.
int_type peek()
Looking ahead in the stream.
__istream_type & ignore(streamsize __n, int_type __delim)
Discarding characters.
__istream_type & operator>>(__streambuf_type *__sb)
Extracting into another streambuf.
__istream_type & unget()
Unextracting the previous character.
pos_type tellg()
Getting the current read position.
__istream_type & operator>>(int &__n)
Integer arithmetic extractors.
__istream_type & get(__streambuf_type &__sb)
Extraction into another streambuf.
__istream_type & operator>>(double &__f)
Floating point arithmetic extractors.
__istream_type & ignore()
Simple extraction.
__istream_type & operator>>(bool &__n)
Integer arithmetic extractors.
__istream_type & operator>>(long &__n)
Integer arithmetic extractors.
__istream_type & get(char_type &__c)
Simple extraction.
virtual ~basic_istream()
Base destructor.
__istream_type & getline(char_type *__s, streamsize __n)
String extraction.
__istream_type & operator>>(unsigned long long &__n)
Integer arithmetic extractors.
__istream_type & operator>>(float &__f)
Floating point arithmetic extractors.
__istream_type & operator>>(__ios_type &(*__pf)(__ios_type &))
Interface for manipulators.
__istream_type & operator>>(long long &__n)
Integer arithmetic extractors.
__istream_type & operator>>(unsigned long &__n)
Integer arithmetic extractors.
__istream_type & read(char_type *__s, streamsize __n)
Extraction without delimiters.
__istream_type & operator>>(unsigned int &__n)
Integer arithmetic extractors.
__istream_type & operator>>(unsigned short &__n)
Integer arithmetic extractors.
__istream_type & putback(char_type __c)
Unextracting a single character.
basic_istream(__streambuf_type *__sb)
Base constructor.
__istream_type & seekg(off_type, ios_base::seekdir)
Changing the current read position.
__istream_type & getline(char_type *__s, streamsize __n, char_type __delim)
String extraction.
__istream_type & get(char_type *__s, streamsize __n, char_type __delim)
Simple multiple-character extraction.
__istream_type & get(char_type *__s, streamsize __n)
Simple multiple-character extraction.
__istream_type & operator>>(ios_base &(*__pf)(ios_base &))
Interface for manipulators.
__istream_type & operator>>(long double &__f)
Floating point arithmetic extractors.
__istream_type & operator>>(__istream_type &(*__pf)(__istream_type &))
Interface for manipulators.
int sync()
Synchronizing the stream buffer.
__istream_type & operator>>(short &__n)
Integer arithmetic extractors.
__istream_type & ignore(streamsize __n)
Simple extraction.
basic_ostream(__streambuf_type *__sb)
Base constructor.
basic_iostream(basic_streambuf< _CharT, _Traits > *__sb)
Constructor does nothing.
virtual ~basic_iostream()
Destructor does nothing.
sentry(basic_istream< _CharT, _Traits > &__is, bool __noskipws=false)
The constructor performs all the work.
_Traits traits_type
Easy access to dependent types.
The base of the I/O class hierarchy.
static const iostate eofbit
Indicates that an input operation reached the end of an input sequence.
_Ios_Seekdir seekdir
This is an enumerated type.
static const iostate failbit
Indicates that an input operation failed to read the expected characters, or that an output operation...
Primary class template ctype facet.
Primary class template num_get.