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

📄 locale_facets.tcc

📁 c++编程宝典源码及Quincy99编译器 是《标准C++编程宝典》电子工业出版社的光盘
💻 TCC
📖 第 1 页 / 共 3 页
字号:
		  if (__pos == sizeof(__true) - sizeof(char_type))		    {		      __err |= ios_base::goodbit;		      __v = 1;		    }		}	    }	  if (__beg == __end)	    __err |= ios_base::eofbit;	  	  if (!((__err & ios_base::goodbit) == 0 || __err & ios_base::eofbit))	    __err |= ios_base::failbit;	}            return __beg;    }  #ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, short& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 32 for      // integral types.x      char __xtrc[32]= {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, false);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;      long __vl = strtol(__xtrc, &__sanity, __base);      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0	  && __vl >= SHRT_MIN && __vl <= SHRT_MAX) 	{	  __v = static_cast<short>(__vl);	  __err = ios_base::goodbit;	}      else	__err |= ios_base::failbit;            return __beg;    }  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, int& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 32 for      // integral types.      char __xtrc[32] = {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, false);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;      long __vl = strtol(__xtrc, &__sanity, __base);      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0	  && __vl >= INT_MIN && __vl <= INT_MAX) 	{	  __v = static_cast<int>(__vl);	  __err = ios_base::goodbit;	}      else	__err |= ios_base::failbit;            return __beg;    }#endif     template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, long& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 32 for      // integral types.      char __xtrc[32]= {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, false);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;      __v = strtol(__xtrc, &__sanity, __base);      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0)	__err = ios_base::goodbit;      else	__err |= ios_base::failbit;            return __beg;    }   #ifdef _GLIBCPP_USE_LONG_LONG  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, long long& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 32 for      // integral types.      char __xtrc[32]= {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, false);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;      __v = strtoll(__xtrc, &__sanity, __base);      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0)	__err = ios_base::goodbit;      else	__err |= ios_base::failbit;            return __beg;    }#endif  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, unsigned short& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 32 for      // integral types.      char __xtrc[32]= {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, false);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;      unsigned long __vl = strtoul(__xtrc, &__sanity, __base);      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0	  && __vl <= USHRT_MAX) 	{	  __v = static_cast<unsigned short>(__vl);	  __err = ios_base::goodbit;	}      else	__err |= ios_base::failbit;            return __beg;    }  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, unsigned int& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 32 for      // integral types.      char __xtrc[32]= {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, false);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;      unsigned long __vl = strtoul(__xtrc, &__sanity, __base);      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0	  && __vl <= UINT_MAX) 	{	  __v = static_cast<unsigned int>(__vl);	  __err = ios_base::goodbit;	}      else	__err |= ios_base::failbit;            return __beg;    }  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, unsigned long& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 32 for      // integral types.      char __xtrc[32] = {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, false);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;      __v = strtoul(__xtrc, &__sanity, __base);      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0)	__err = ios_base::goodbit;      else	__err |= ios_base::failbit;            return __beg;    }#ifdef _GLIBCPP_USE_LONG_LONG  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, unsigned long long& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 32 for      // integral types.      char __xtrc[32]= {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, false);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;      __v = strtoull(__xtrc, &__sanity, __base);      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0)	__err = ios_base::goodbit;      else	__err |= ios_base::failbit;            return __beg;    }#endif  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, float& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 256 for      // floating-point types.      char __xtrc[32]= {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, true);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;#ifdef HAVE_STRTOF      __v = strtof(__xtrc, &__sanity);#else      __v = static_cast<float>(strtod(__xtrc, &__sanity));#endif      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0)	__err = ios_base::goodbit;      else	__err |= ios_base::failbit;            return __beg;    }  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, double& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 256 for      // floating-point types.      char __xtrc[32]= {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, true);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;      __v = strtod(__xtrc, &__sanity);      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0)	__err = ios_base::goodbit;      else	__err |= ios_base::failbit;            return __beg;    }#if defined(HAVE_STRTOLD) && !defined(__hpux)  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, long double& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 256 for      // floating-point types.      char __xtrc[32]= {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, true);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;      __v = strtold(__xtrc, &__sanity);      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0)	__err = ios_base::goodbit;      else	__err |= ios_base::failbit;            return __beg;    }#else  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, long double& __v) const    {      // Stage 1: extract      char __xtrc[32]= {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, true);      // Stage 2: determine a conversion specifier.      ios_base::fmtflags __basefield = __io.flags() & ios_base::basefield;      const char* __conv;      if (__basefield == ios_base::oct)	__conv = "%Lo";      else if (__basefield == ios_base::hex)	__conv = "%LX";      else if (__basefield == 0)	__conv = "%Li";      else	__conv = "%Lg";      // Stage 3: store results.      int __p = sscanf(__xtrc, __conv, &__v);      if (__p 	  && static_cast<__traits_type::int_type>(__p) != __traits_type::eof())	__err = ios_base::goodbit;      else	__err |= ios_base::failbit;            return __beg;    }#endif  template<typename _CharT, typename _InIter>    _InIter     num_get<_CharT, _InIter>::    do_get(iter_type __beg, iter_type __end, ios_base& __io, 	   ios_base::iostate& __err, void*& __v) const    {      // Stage 1: extract and determine the conversion specifier.      // Assuming leading zeros eliminated, thus the size of 32 for      // integral types.      char __xtrc[32]= {'\0'};      int __base;      _M_extract(__beg, __end, __io, __err, __xtrc, __base, false);            // Stage 2: convert and store results.      char* __sanity;      errno = 0;      __v = reinterpret_cast<void*>(strtol(__xtrc, &__sanity, __base));      if (__sanity != __xtrc && *__sanity == '\0' && errno == 0)	__err = ios_base::goodbit;      else	__err |= ios_base::failbit;            return __beg;    }  template <typename _CharT, typename _OutIter>    locale::id num_put<_CharT, _OutIter>::id;  // _S_fill is specialized for ostreambuf_iterator, random access iterator.  template <typename _CharT, typename _OutIter>    inline _OutIter    _S_fill(_OutIter __s, _CharT __fill, int __padding);  template <typename _CharT, typename _RaIter>    _RaIter    _S_fill(_RaIter __s, _CharT __fill, int __padding,            random_access_iterator_tag)    {      fill_n(__s, __fill);      return __s + __padding;    }  template <typename _CharT, typename _OutIter, typename _Tag>    _OutIter    _S_fill(_OutIter __s, _CharT __fill, int __padding, _Tag)    {      while (--__padding >= 0) { *__s = __fill; ++__s; }      return __s;    }  template <typename _CharT, typename _OutIter>    inline _OutIter    _S_fill(_OutIter __s, _CharT __fill, int __padding)    {      return _S_fill(__s, __fill, __padding,		     iterator_traits<_OutIter>::iterator_category());    }  template <typename _CharT, typename _OutIter>    _OutIter

⌨️ 快捷键说明

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