35 #define _ISTREAM_TCC 1 
   37 #pragma GCC system_header 
   41 namespace std _GLIBCXX_VISIBILITY(default)
 
   43 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   45   template<
typename _CharT, 
typename _Traits>
 
   57                 const __int_type __eof = traits_type::eof();
 
   59                 __int_type __c = __sb->
sgetc();
 
   62                 while (!traits_type::eq_int_type(__c, __eof)
 
   63                        && __ct.
is(ctype_base::space,
 
   64                                   traits_type::to_char_type(__c)))
 
   70                 if (traits_type::eq_int_type(__c, __eof))
 
   77             __throw_exception_again;
 
   91   template<
typename _CharT, 
typename _Traits>
 
   92     template<
typename _ValueT>
 
   97         sentry __cerb(*
this, 
false);
 
  104                 __ng.
get(*
this, 0, *
this, __err, __v);
 
  109                 __throw_exception_again;
 
  119   template<
typename _CharT, 
typename _Traits>
 
  120     basic_istream<_CharT, _Traits>&
 
  126       sentry __cerb(*
this, 
false);
 
  134               __ng.
get(*
this, 0, *
this, __err, __l);
 
  138               if (__l < __gnu_cxx::__numeric_traits<short>::__min)
 
  141                   __n = __gnu_cxx::__numeric_traits<short>::__min;
 
  143               else if (__l > __gnu_cxx::__numeric_traits<short>::__max)
 
  146                   __n = __gnu_cxx::__numeric_traits<short>::__max;
 
  154               __throw_exception_again;
 
  164   template<
typename _CharT, 
typename _Traits>
 
  171       sentry __cerb(*
this, 
false);
 
  179               __ng.
get(*
this, 0, *
this, __err, __l);
 
  183               if (__l < __gnu_cxx::__numeric_traits<int>::__min)
 
  186                   __n = __gnu_cxx::__numeric_traits<int>::__min;
 
  188               else if (__l > __gnu_cxx::__numeric_traits<int>::__max)
 
  191                   __n = __gnu_cxx::__numeric_traits<int>::__max;
 
  199               __throw_exception_again;
 
  209   template<
typename _CharT, 
typename _Traits>
 
  210     basic_istream<_CharT, _Traits>&
 
  215       sentry __cerb(*
this, 
false);
 
  216       if (__cerb && __sbout)
 
  221               if (!__copy_streambufs_eof(this->
rdbuf(), __sbout, __ineof))
 
  229               __throw_exception_again;
 
  241   template<
typename _CharT, 
typename _Traits>
 
  242     typename basic_istream<_CharT, _Traits>::int_type
 
  246       const int_type __eof = traits_type::eof();
 
  247       int_type __c = __eof;
 
  250       sentry __cerb(*
this, 
true);
 
  255               __c = this->
rdbuf()->sbumpc();
 
  257               if (!traits_type::eq_int_type(__c, __eof))
 
  265               __throw_exception_again;
 
  277   template<
typename _CharT, 
typename _Traits>
 
  278     basic_istream<_CharT, _Traits>&
 
  284       sentry __cerb(*
this, 
true);
 
  289               const int_type __cb = this->
rdbuf()->sbumpc();
 
  291               if (!traits_type::eq_int_type(__cb, traits_type::eof()))
 
  294                   __c = traits_type::to_char_type(__cb);
 
  302               __throw_exception_again;
 
  314   template<
typename _CharT, 
typename _Traits>
 
  315     basic_istream<_CharT, _Traits>&
 
  321       sentry __cerb(*
this, 
true);
 
  326               const int_type __idelim = traits_type::to_int_type(__delim);
 
  327               const int_type __eof = traits_type::eof();
 
  329               int_type __c = __sb->
sgetc();
 
  332                      && !traits_type::eq_int_type(__c, __eof)
 
  333                      && !traits_type::eq_int_type(__c, __idelim))
 
  335                   *__s++ = traits_type::to_char_type(__c);
 
  339               if (traits_type::eq_int_type(__c, __eof))
 
  345               __throw_exception_again;
 
  361   template<
typename _CharT, 
typename _Traits>
 
  362     basic_istream<_CharT, _Traits>&
 
  368       sentry __cerb(*
this, 
true);
 
  373               const int_type __idelim = traits_type::to_int_type(__delim);
 
  374               const int_type __eof = traits_type::eof();
 
  376               int_type __c = __this_sb->
sgetc();
 
  379               while (!traits_type::eq_int_type(__c, __eof)
 
  380                      && !traits_type::eq_int_type(__c, __idelim)
 
  381                      && !traits_type::eq_int_type(__sb.
sputc(__c2), __eof))
 
  384                   __c = __this_sb->
snextc();
 
  385                   __c2 = traits_type::to_char_type(__c);
 
  387               if (traits_type::eq_int_type(__c, __eof))
 
  393               __throw_exception_again;
 
  405   template<
typename _CharT, 
typename _Traits>
 
  406     basic_istream<_CharT, _Traits>&
 
  412       sentry __cerb(*
this, 
true);
 
  417               const int_type __idelim = traits_type::to_int_type(__delim);
 
  418               const int_type __eof = traits_type::eof();
 
  423                      && !traits_type::eq_int_type(__c, __eof)
 
  424                      && !traits_type::eq_int_type(__c, __idelim))
 
  426                   *__s++ = traits_type::to_char_type(__c);
 
  430               if (traits_type::eq_int_type(__c, __eof))
 
  434                   if (traits_type::eq_int_type(__c, __idelim))
 
  446               __throw_exception_again;
 
  465   template<
typename _CharT, 
typename _Traits>
 
  471       sentry __cerb(*
this, 
true);
 
  477               const int_type __eof = traits_type::eof();
 
  480               if (traits_type::eq_int_type(__sb->
sbumpc(), __eof))
 
  488               __throw_exception_again;
 
  498   template<
typename _CharT, 
typename _Traits>
 
  499     basic_istream<_CharT, _Traits>&
 
  504       sentry __cerb(*
this, 
true);
 
  505       if (__cerb && __n > 0)
 
  510               const int_type __eof = traits_type::eof();
 
  521               bool __large_ignore = 
false;
 
  525                          && !traits_type::eq_int_type(__c, __eof))
 
  530                   if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
 
  531                       && !traits_type::eq_int_type(__c, __eof))
 
  534                         __gnu_cxx::__numeric_traits<streamsize>::__min;
 
  535                       __large_ignore = 
true;
 
  542                 _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
 
  544               if (traits_type::eq_int_type(__c, __eof))
 
  550               __throw_exception_again;
 
  560   template<
typename _CharT, 
typename _Traits>
 
  561     basic_istream<_CharT, _Traits>&
 
  566       sentry __cerb(*
this, 
true);
 
  567       if (__cerb && __n > 0)
 
  572               const int_type __eof = traits_type::eof();
 
  577               bool __large_ignore = 
false;
 
  581                          && !traits_type::eq_int_type(__c, __eof)
 
  582                          && !traits_type::eq_int_type(__c, __delim))
 
  587                   if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
 
  588                       && !traits_type::eq_int_type(__c, __eof)
 
  589                       && !traits_type::eq_int_type(__c, __delim))
 
  592                         __gnu_cxx::__numeric_traits<streamsize>::__min;
 
  593                       __large_ignore = 
true;
 
  600                 _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
 
  602               if (traits_type::eq_int_type(__c, __eof))
 
  604               else if (traits_type::eq_int_type(__c, __delim))
 
  607                       < __gnu_cxx::__numeric_traits<streamsize>::__max)
 
  615               __throw_exception_again;
 
  625   template<
typename _CharT, 
typename _Traits>
 
  626     typename basic_istream<_CharT, _Traits>::int_type
 
  630       int_type __c = traits_type::eof();
 
  632       sentry __cerb(*
this, 
true);
 
  638               __c = this->
rdbuf()->sgetc();
 
  639               if (traits_type::eq_int_type(__c, traits_type::eof()))
 
  645               __throw_exception_again;
 
  655   template<
typename _CharT, 
typename _Traits>
 
  661       sentry __cerb(*
this, 
true);
 
  674               __throw_exception_again;
 
  684   template<
typename _CharT, 
typename _Traits>
 
  690       sentry __cerb(*
this, 
true);
 
  700               else if (__num == -1)
 
  706               __throw_exception_again;
 
  716   template<
typename _CharT, 
typename _Traits>
 
  726       sentry __cerb(*
this, 
true);
 
  732               const int_type __eof = traits_type::eof();
 
  735                   || traits_type::eq_int_type(__sb->
sputbackc(__c), __eof))
 
  741               __throw_exception_again;
 
  751   template<
typename _CharT, 
typename _Traits>
 
  752     basic_istream<_CharT, _Traits>&
 
  761       sentry __cerb(*
this, 
true);
 
  767               const int_type __eof = traits_type::eof();
 
  770                   || traits_type::eq_int_type(__sb->
sungetc(), __eof))
 
  776               __throw_exception_again;
 
  786   template<
typename _CharT, 
typename _Traits>
 
  794       sentry __cerb(*
this, 
true);
 
  812               __throw_exception_again;
 
  822   template<
typename _CharT, 
typename _Traits>
 
  823     typename basic_istream<_CharT, _Traits>::pos_type
 
  829       pos_type __ret = pos_type(-1);
 
  830       sentry __cerb(*
this, 
true);
 
  842               __throw_exception_again;
 
  850   template<
typename _CharT, 
typename _Traits>
 
  853     seekg(pos_type __pos)
 
  859       sentry __cerb(*
this, 
true);
 
  868                   const pos_type __p = this->
rdbuf()->pubseekpos(__pos,
 
  872                   if (__p == pos_type(off_type(-1)))
 
  879               __throw_exception_again;
 
  889   template<
typename _CharT, 
typename _Traits>
 
  892     seekg(off_type __off, ios_base::seekdir __dir)
 
  898       sentry __cerb(*
this, 
true);
 
  907                   const pos_type __p = this->
rdbuf()->pubseekoff(__off, __dir,
 
  911                   if (__p == pos_type(off_type(-1)))
 
  918               __throw_exception_again;
 
  929   template<
typename _CharT, 
typename _Traits>
 
  934       typedef typename __istream_type::int_type         __int_type;
 
  936       typename __istream_type::sentry __cerb(__in, 
false);
 
  942               const __int_type __cb = __in.
rdbuf()->sbumpc();
 
  943               if (!_Traits::eq_int_type(__cb, _Traits::eof()))
 
  944                 __c = _Traits::to_char_type(__cb);
 
  951               __throw_exception_again;
 
  961   template<
typename _CharT, 
typename _Traits>
 
  962     basic_istream<_CharT, _Traits>&
 
  967       typedef typename _Traits::int_type                int_type;
 
  968       typedef _CharT                                    char_type;
 
  973       typename __istream_type::sentry __cerb(__in, 
false);
 
  981                 __num = __gnu_cxx::__numeric_traits<streamsize>::__max;
 
  983               const __ctype_type& __ct = use_facet<__ctype_type>(__in.
getloc());
 
  985               const int_type __eof = _Traits::eof();
 
  986               __streambuf_type* __sb = __in.
rdbuf();
 
  987               int_type __c = __sb->sgetc();
 
  989               while (__extracted < __num - 1
 
  990                      && !_Traits::eq_int_type(__c, __eof)
 
  991                      && !__ct.is(ctype_base::space,
 
  992                                  _Traits::to_char_type(__c)))
 
  994                   *__s++ = _Traits::to_char_type(__c);
 
  996                   __c = __sb->snextc();
 
  998               if (_Traits::eq_int_type(__c, __eof))
 
 1009               __throw_exception_again;
 
 1022   template<
typename _CharT, 
typename _Traits>
 
 1023     basic_istream<_CharT, _Traits>&
 
 1028       typedef typename __istream_type::int_type         __int_type;
 
 1031       const __ctype_type& __ct = use_facet<__ctype_type>(__in.
getloc());
 
 1032       const __int_type __eof = _Traits::eof();
 
 1033       __streambuf_type* __sb = __in.
rdbuf();
 
 1034       __int_type __c = __sb->sgetc();
 
 1036       while (!_Traits::eq_int_type(__c, __eof)
 
 1037              && __ct.is(ctype_base::space, _Traits::to_char_type(__c)))
 
 1038         __c = __sb->snextc();
 
 1040        if (_Traits::eq_int_type(__c, __eof))
 
 1047 #if _GLIBCXX_EXTERN_TEMPLATE 
 1048   extern template class basic_istream<char>;
 
 1057   extern template istream& istream::_M_extract(
unsigned short&);
 
 1058   extern template istream& istream::_M_extract(
unsigned int&);  
 
 1059   extern template istream& istream::_M_extract(
long&);
 
 1060   extern template istream& istream::_M_extract(
unsigned long&);
 
 1061   extern template istream& istream::_M_extract(
bool&);
 
 1062 #ifdef _GLIBCXX_USE_LONG_LONG 
 1063   extern template istream& istream::_M_extract(
long long&);
 
 1064   extern template istream& istream::_M_extract(
unsigned long long&);
 
 1066   extern template istream& istream::_M_extract(
float&);
 
 1067   extern template istream& istream::_M_extract(
double&);
 
 1068   extern template istream& istream::_M_extract(
long double&);
 
 1069   extern template istream& istream::_M_extract(
void*&);
 
 1071   extern template class basic_iostream<char>;
 
 1073 #ifdef _GLIBCXX_USE_WCHAR_T 
 1074   extern template class basic_istream<wchar_t>;
 
 1079   extern template wistream& wistream::_M_extract(
unsigned short&);
 
 1080   extern template wistream& wistream::_M_extract(
unsigned int&);  
 
 1081   extern template wistream& wistream::_M_extract(
long&);
 
 1082   extern template wistream& wistream::_M_extract(
unsigned long&);
 
 1083   extern template wistream& wistream::_M_extract(
bool&);
 
 1084 #ifdef _GLIBCXX_USE_LONG_LONG 
 1085   extern template wistream& wistream::_M_extract(
long long&);
 
 1086   extern template wistream& wistream::_M_extract(
unsigned long long&);
 
 1088   extern template wistream& wistream::_M_extract(
float&);
 
 1089   extern template wistream& wistream::_M_extract(
double&);
 
 1090   extern template wistream& wistream::_M_extract(
long double&);
 
 1091   extern template wistream& wistream::_M_extract(
void*&);
 
 1093   extern template class basic_iostream<wchar_t>;
 
 1097 _GLIBCXX_END_NAMESPACE_VERSION
 
basic_istream< char > istream
Base class for char input streams.
 
basic_istream< wchar_t > wistream
Base class for wchar_t input streams.
 
constexpr const _Tp & min(const _Tp &, const _Tp &)
This does what you think it does.
 
ISO C++ entities toplevel namespace is std.
 
ptrdiff_t streamsize
Integral type for I/O operation counts and buffer sizes.
 
basic_istream< _CharT, _Traits > & ws(basic_istream< _CharT, _Traits > &__is)
Quick and easy way to eat whitespace.
 
void clear(iostate __state=goodbit)
[Re]sets the error state.
 
basic_ostream< _CharT, _Traits > * tie() const
Fetches the current tied stream.
 
basic_streambuf< _CharT, _Traits > * rdbuf() const
Accessing the underlying buffer.
 
void setstate(iostate __state)
Sets additional flags in the error state.
 
iostate rdstate() const
Returns the error state of the stream buffer.
 
bool good() const
Fast error checking.
 
bool fail() const
Fast error checking.
 
_Traits::int_type int_type
 
The actual work of input and output (interface).
 
int_type snextc()
Getting the next character.
 
int_type sbumpc()
Getting the next character.
 
int_type sungetc()
Moving backwards in the input stream.
 
int_type sgetc()
Getting the next character.
 
int pubsync()
Calls virtual sync function.
 
int_type sputbackc(char_type __c)
Pushing characters back into the input stream.
 
int_type sputc(char_type __c)
Entry point for all single-character output functions.
 
Template class basic_istream.
 
__istream_type & seekg(pos_type)
Changing the current read position.
 
int_type get()
Simple extraction.
 
streamsize readsome(char_type *__s, streamsize __n)
Extraction until the buffer is exhausted, but no more.
 
int_type peek()
Looking ahead in the stream.
 
__istream_type & unget()
Unextracting the previous character.
 
pos_type tellg()
Getting the current read position.
 
__istream_type & ignore()
Simple extraction.
 
__istream_type & read(char_type *__s, streamsize __n)
Extraction without delimiters.
 
__istream_type & putback(char_type __c)
Unextracting a single character.
 
__istream_type & getline(char_type *__s, streamsize __n, char_type __delim)
String extraction.
 
int sync()
Synchronizing the stream buffer.
 
__istream_type & operator>>(__istream_type &(*__pf)(__istream_type &))
Interface for manipulators.
 
Performs setup work for input streams.
 
sentry(basic_istream< _CharT, _Traits > &__is, bool __noskipws=false)
The constructor performs all the work.
 
Thrown as part of forced unwinding.
 
static const fmtflags skipws
Skips leading white space before certain input operations.
 
static const seekdir cur
Request a seek relative to the current position within the sequence.
 
static const openmode in
Open for input. Default for ifstream and fstream.
 
fmtflags flags() const
Access to format flags.
 
static const iostate eofbit
Indicates that an input operation reached the end of an input sequence.
 
static const iostate goodbit
Indicates all is well.
 
static const iostate badbit
Indicates a loss of integrity in an input or output sequence (such as an irrecoverable read error fro...
 
streamsize width() const
Flags access.
 
locale getloc() const
Locale access.
 
static const iostate failbit
Indicates that an input operation failed to read the expected characters, or that an output operation...
 
bool is(mask __m, char_type __c) const
Test char_type classification.
 
Primary class template ctype facet.
 
Primary class template num_get.
 
iter_type get(iter_type __in, iter_type __end, ios_base &__io, ios_base::iostate &__err, bool &__v) const
Numeric parsing.