⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 istream.tcc

📁 openRisc2000编译链接器等,用于i386 cygwin
💻 TCC
📖 第 1 页 / 共 3 页
字号:
	    {	      const int_type __eof = traits_type::eof();	      __streambuf_type* __sb = this->rdbuf();	      if (!__sb		  || traits_type::eq_int_type(__sb->sungetc(), __eof))		__err |= ios_base::badbit;	    }	  catch(...)	    { this->_M_setstate(ios_base::badbit); }	  if (__err)	    this->setstate(__err);	}      return *this;    }  template<typename _CharT, typename _Traits>    int    basic_istream<_CharT, _Traits>::    sync(void)    {      // _GLIBCXX_RESOLVE_LIB_DEFECTS      // DR60.  Do not change _M_gcount.      int __ret = -1;      sentry __cerb(*this, true);      if (__cerb)	{	  ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);	  try	    {	      __streambuf_type* __sb = this->rdbuf();	      if (__sb)		{		  if (__sb->pubsync() == -1)		    __err |= ios_base::badbit;		  else		    __ret = 0;		}	    }	  catch(...)	    { this->_M_setstate(ios_base::badbit); }	  if (__err)	    this->setstate(__err);	}      return __ret;    }  template<typename _CharT, typename _Traits>    typename basic_istream<_CharT, _Traits>::pos_type    basic_istream<_CharT, _Traits>::    tellg(void)    {      // _GLIBCXX_RESOLVE_LIB_DEFECTS      // DR60.  Do not change _M_gcount.      pos_type __ret = pos_type(-1);      try	{	  if (!this->fail())	    __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::in);	}      catch(...)	{ this->_M_setstate(ios_base::badbit); }      return __ret;    }  template<typename _CharT, typename _Traits>    basic_istream<_CharT, _Traits>&    basic_istream<_CharT, _Traits>::    seekg(pos_type __pos)    {      // _GLIBCXX_RESOLVE_LIB_DEFECTS      // DR60.  Do not change _M_gcount.      ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);      try	{	  if (!this->fail())	    {	      // 136.  seekp, seekg setting wrong streams?	      const pos_type __p = this->rdbuf()->pubseekpos(__pos,							     ios_base::in);	      // 129. Need error indication from seekp() and seekg()	      if (__p == pos_type(off_type(-1)))		__err |= ios_base::failbit;	    }	}      catch(...)	{ this->_M_setstate(ios_base::badbit); }      if (__err)	this->setstate(__err);      return *this;    }  template<typename _CharT, typename _Traits>    basic_istream<_CharT, _Traits>&    basic_istream<_CharT, _Traits>::    seekg(off_type __off, ios_base::seekdir __dir)    {      // _GLIBCXX_RESOLVE_LIB_DEFECTS      // DR60.  Do not change _M_gcount.      ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);      try	{	  if (!this->fail())	    {	      // 136.  seekp, seekg setting wrong streams?	      const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,							     ios_base::in);	      // 129. Need error indication from seekp() and seekg()	      if (__p == pos_type(off_type(-1)))		__err |= ios_base::failbit;	    }	}      catch(...)	{ this->_M_setstate(ios_base::badbit); }      if (__err)	this->setstate(__err);      return *this;    }  // 27.6.1.2.3 Character extraction templates  template<typename _CharT, typename _Traits>    basic_istream<_CharT, _Traits>&    operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)    {      typedef basic_istream<_CharT, _Traits>		__istream_type;      typedef typename __istream_type::int_type         __int_type;      typename __istream_type::sentry __cerb(__in, false);      if (__cerb)	{	  ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);	  try	    {	      const __int_type __cb = __in.rdbuf()->sbumpc();	      if (!_Traits::eq_int_type(__cb, _Traits::eof()))		__c = _Traits::to_char_type(__cb);	      else		__err |= (ios_base::eofbit | ios_base::failbit);	    }	  catch(...)	    { __in._M_setstate(ios_base::badbit); }	  if (__err)	    __in.setstate(__err);	}      return __in;    }  template<typename _CharT, typename _Traits>    basic_istream<_CharT, _Traits>&    operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)    {      typedef basic_istream<_CharT, _Traits>		__istream_type;      typedef typename __istream_type::__streambuf_type __streambuf_type;      typedef typename _Traits::int_type		int_type;      typedef _CharT					char_type;      typedef ctype<_CharT>				__ctype_type;      streamsize __extracted = 0;      ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);      typename __istream_type::sentry __cerb(__in, false);      if (__cerb)	{	  try	    {	      // Figure out how many characters to extract.	      streamsize __num = __in.width();	      if (__num <= 0)		__num = numeric_limits<streamsize>::max();	      const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());	      const int_type __eof = _Traits::eof();	      __streambuf_type* __sb = __in.rdbuf();	      int_type __c = __sb->sgetc();	      while (__extracted < __num - 1		     && !_Traits::eq_int_type(__c, __eof)		     && !__ct.is(ctype_base::space,				 _Traits::to_char_type(__c)))		{		  *__s++ = _Traits::to_char_type(__c);		  ++__extracted;		  __c = __sb->snextc();		}	      if (_Traits::eq_int_type(__c, __eof))		__err |= ios_base::eofbit;	      // _GLIBCXX_RESOLVE_LIB_DEFECTS	      // 68.  Extractors for char* should store null at end	      *__s = char_type();	      __in.width(0);	    }	  catch(...)	    { __in._M_setstate(ios_base::badbit); }	}      if (!__extracted)	__err |= ios_base::failbit;      if (__err)	__in.setstate(__err);      return __in;    }  // 27.6.1.4 Standard basic_istream manipulators  template<typename _CharT, typename _Traits>    basic_istream<_CharT,_Traits>&    ws(basic_istream<_CharT,_Traits>& __in)    {      typedef basic_istream<_CharT, _Traits>		__istream_type;      typedef typename __istream_type::__streambuf_type __streambuf_type;      typedef typename __istream_type::__ctype_type	__ctype_type;      typedef typename __istream_type::int_type		__int_type;      const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());      const __int_type __eof = _Traits::eof();      __streambuf_type* __sb = __in.rdbuf();      __int_type __c = __sb->sgetc();      while (!_Traits::eq_int_type(__c, __eof)	     && __ct.is(ctype_base::space, _Traits::to_char_type(__c)))	__c = __sb->snextc();       if (_Traits::eq_int_type(__c, __eof))	 __in.setstate(ios_base::eofbit);      return __in;    }  // 21.3.7.9 basic_string::getline and operators  template<typename _CharT, typename _Traits, typename _Alloc>    basic_istream<_CharT, _Traits>&    operator>>(basic_istream<_CharT, _Traits>& __in,	       basic_string<_CharT, _Traits, _Alloc>& __str)    {      typedef basic_istream<_CharT, _Traits>		__istream_type;      typedef typename __istream_type::int_type		__int_type;      typedef typename __istream_type::__streambuf_type __streambuf_type;      typedef typename __istream_type::__ctype_type	__ctype_type;      typedef basic_string<_CharT, _Traits, _Alloc>	__string_type;      typedef typename __string_type::size_type		__size_type;      __size_type __extracted = 0;      ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);      typename __istream_type::sentry __cerb(__in, false);      if (__cerb)	{	  try	    {	      // Avoid reallocation for common case.	      __str.erase();	      _CharT __buf[128];	      __size_type __len = 0;	      	      const streamsize __w = __in.width();	      const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)		                              : __str.max_size();	      const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());	      const __int_type __eof = _Traits::eof();	      __streambuf_type* __sb = __in.rdbuf();	      __int_type __c = __sb->sgetc();	      while (__extracted < __n		     && !_Traits::eq_int_type(__c, __eof)		     && !__ct.is(ctype_base::space, _Traits::to_char_type(__c)))		{		  if (__len == sizeof(__buf) / sizeof(_CharT))		    {		      __str.append(__buf, sizeof(__buf) / sizeof(_CharT));		      __len = 0;		    }		  __buf[__len++] = _Traits::to_char_type(__c);		  ++__extracted;		  __c = __sb->snextc();		}	      __str.append(__buf, __len);	      if (_Traits::eq_int_type(__c, __eof))		__err |= ios_base::eofbit;	      __in.width(0);	    }	  catch(...)	    {	      // _GLIBCXX_RESOLVE_LIB_DEFECTS	      // 91. Description of operator>> and getline() for string<>	      // might cause endless loop	      __in._M_setstate(ios_base::badbit);	    }	}      // 211.  operator>>(istream&, string&) doesn't set failbit      if (!__extracted)	__err |= ios_base::failbit;      if (__err)	__in.setstate(__err);      return __in;    }  template<typename _CharT, typename _Traits, typename _Alloc>    basic_istream<_CharT, _Traits>&    getline(basic_istream<_CharT, _Traits>& __in,	    basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim)    {      typedef basic_istream<_CharT, _Traits>		__istream_type;      typedef typename __istream_type::int_type		__int_type;      typedef typename __istream_type::__streambuf_type __streambuf_type;      typedef typename __istream_type::__ctype_type	__ctype_type;      typedef basic_string<_CharT, _Traits, _Alloc>	__string_type;      typedef typename __string_type::size_type		__size_type;      __size_type __extracted = 0;      const __size_type __n = __str.max_size();      ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);      typename __istream_type::sentry __cerb(__in, true);      if (__cerb)	{	  try	    {	      // Avoid reallocation for common case.	      __str.erase();	      _CharT __buf[128];	      __size_type __len = 0;	      const __int_type __idelim = _Traits::to_int_type(__delim);	      const __int_type __eof = _Traits::eof();	      __streambuf_type* __sb = __in.rdbuf();	      __int_type __c = __sb->sgetc();	      while (__extracted < __n		     && !_Traits::eq_int_type(__c, __eof)		     && !_Traits::eq_int_type(__c, __idelim))		{		  if (__len == sizeof(__buf) / sizeof(_CharT))		    {		      __str.append(__buf, sizeof(__buf) / sizeof(_CharT));		      __len = 0;		    }		  __buf[__len++] = _Traits::to_char_type(__c);		  ++__extracted;		  __c = __sb->snextc();		}	      __str.append(__buf, __len);	      if (_Traits::eq_int_type(__c, __eof))		__err |= ios_base::eofbit;	      else if (_Traits::eq_int_type(__c, __idelim))		{		  ++__extracted;		  		  __sb->sbumpc();		}	      else		__err |= ios_base::failbit;	    }	  catch(...)	    {	      // _GLIBCXX_RESOLVE_LIB_DEFECTS	      // 91. Description of operator>> and getline() for string<>	      // might cause endless loop	      __in._M_setstate(ios_base::badbit);	    }	}      if (!__extracted)	__err |= ios_base::failbit;      if (__err)	__in.setstate(__err);      return __in;    }  template<class _CharT, class _Traits, class _Alloc>    inline basic_istream<_CharT,_Traits>&    getline(basic_istream<_CharT, _Traits>& __in,	    basic_string<_CharT,_Traits,_Alloc>& __str)    { return getline(__in, __str, __in.widen('\n')); }  // Inhibit implicit instantiations for required instantiations,  // which are defined via explicit instantiations elsewhere.  // NB:  This syntax is a GNU extension.#if _GLIBCXX_EXTERN_TEMPLATE  extern template class basic_istream<char>;  extern template istream& ws(istream&);  extern template istream& operator>>(istream&, char&);  extern template istream& operator>>(istream&, char*);  extern template istream& operator>>(istream&, unsigned char&);  extern template istream& operator>>(istream&, signed char&);  extern template istream& operator>>(istream&, unsigned char*);  extern template istream& operator>>(istream&, signed char*);  extern template class basic_iostream<char>;#ifdef _GLIBCXX_USE_WCHAR_T  extern template class basic_istream<wchar_t>;  extern template wistream& ws(wistream&);  extern template wistream& operator>>(wistream&, wchar_t&);  extern template wistream& operator>>(wistream&, wchar_t*);  extern template class basic_iostream<wchar_t>;#endif#endif} // namespace std#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -