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

📄 istream.tcc

📁 俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)的全部源代码。
💻 TCC
📖 第 1 页 / 共 3 页
字号:
	  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>::    unget(void)    {#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS// 60. What is a formatted input function?      _M_gcount = 0;#endif      sentry __cerb(*this, true);      if (__cerb) 	{	  ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);	  try 	    {	      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?	      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?	      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;      typename __istream_type::sentry __cerb(__in, false);      if (__cerb)	{	  ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);	  try 	    {	      typename __istream_type::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& __ctype = 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)		     && !__ctype.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;#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS//68.  Extractors for char* should store null at end	      *__s = char_type();#endif	      __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& __ctype = 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) 	     && __ctype.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	    {	      __str.erase();	      streamsize __w = __in.width();	      __size_type __n;	      __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)))		{		  __str += _Traits::to_char_type(__c);		  ++__extracted;		  __c = __sb->snextc();		}	      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();      bool __testdelim = false;      ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);      typename __istream_type::sentry __cerb(__in, true);      if (__cerb) 	{	  try	    {	      __str.erase();	      __int_type __idelim = _Traits::to_int_type(__delim);	      __streambuf_type* __sb = __in.rdbuf();	      __int_type __c = __sb->sbumpc();	      const __int_type __eof = _Traits::eof();	      __testdelim = _Traits::eq_int_type(__c, __idelim);	      	      while (!_Traits::eq_int_type(__c, __eof) && !__testdelim		     && __extracted < __n)		{		  __str += _Traits::to_char_type(__c);		  ++__extracted;		  __c = __sb->sbumpc();		  __testdelim = _Traits::eq_int_type(__c, __idelim);		}	      if (_Traits::eq_int_type(__c, __eof))		__err |= ios_base::eofbit;	    }	  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 && !__testdelim) || __extracted == __n)	__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 _GLIBCPP_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*);#ifdef _GLIBCPP_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*);#endif#endif} // namespace std

⌨️ 快捷键说明

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