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

📄 ostream.tcc

📁 c++编程宝典源码及Quincy99编译器 是《标准C++编程宝典》电子工业出版社的光盘
💻 TCC
📖 第 1 页 / 共 2 页
字号:
	  streamsize __put = this->rdbuf()->sputn(__s, __n);	  if ( __put != __n)	    this->setstate(ios_base::badbit);	}      return *this;    }  template<typename _CharT, typename _Traits>    basic_ostream<_CharT, _Traits>&    basic_ostream<_CharT, _Traits>::flush()    {      sentry __cerb(*this);      if (__cerb) 	{	  if (this->rdbuf() && this->rdbuf()->pubsync() == -1)	    this->setstate(ios_base::badbit);	}      return *this;    }    template<typename _CharT, typename _Traits>    typename basic_ostream<_CharT, _Traits>::pos_type    basic_ostream<_CharT, _Traits>::tellp()    {      pos_type __retval = pos_type(-1);      bool __testok = this->fail() != true;            if (__testok)	__retval = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);      return __retval;    }  template<typename _CharT, typename _Traits>    basic_ostream<_CharT, _Traits>&    basic_ostream<_CharT, _Traits>::seekp(pos_type __pos)    {      bool __testok = this->fail() != true;            if (__testok)	this->rdbuf()->pubseekpos(__pos);      return *this;    }  template<typename _CharT, typename _Traits>    basic_ostream<_CharT, _Traits>&    basic_ostream<_CharT, _Traits>::seekp(off_type __off, 					  ios_base::seekdir __dir)    {      bool __testok = this->fail() != true;            if (__testok)	rdbuf()->pubseekoff(__off, __dir);      return *this;    }  // 27.6.2.5.4 Character inserters  // Construct correctly padded string, as per 22.2.2.2.2  // Similar in theory to _S_pad_numeric, from num_put, but it doesn't  // use _S_fill: perhaps it should.  // Assumes   // __newlen > __oldlen  // __news is allocated for __newlen size  template<typename _CharT, typename _Traits>    static void    _S_pad_char(const basic_ios<_CharT, _Traits>& __ios, 		_CharT* __news, const _CharT* __olds,		const streamsize __newlen, const streamsize __oldlen)    {      typedef _CharT	char_type;      typedef _Traits	traits_type;      size_t __plen = static_cast<size_t>(__newlen - __oldlen); // + 1 ??      char_type __pads[__plen];      traits_type::assign(__pads, __plen, __ios.fill()); // terminate?      char_type* __beg;      char_type* __end;      size_t __mod = 0;      size_t __beglen; //either __plen or __oldlen      ios_base::fmtflags __fmt = __ios.flags() & ios_base::adjustfield;      if (__fmt == ios_base::left)	{	  // Padding last.	  __beg = const_cast<char_type*>(__olds);	  __beglen = __oldlen;	  __end = __pads;	}      else if (__fmt == ios_base::internal)	{	  // Pad after the sign.	  // Pad after 0[xX]	  // XXX	  // Find what this locale looks at for the sign or hex	  // search string for it,if not found go to "else" below.	  bool __hex = __olds[0] == '0' 	    	       && (__olds[1] == 'x' || __olds[1] == 'X');	  // XXX Assumes sign/hex at the beginning of the string.	  __news[0] = __olds[0]; 	  ++__mod;	  if (__hex)	    {	      // Need to get [xX] too.	      __news[1] = __olds[1];	      ++__mod;	    }	  __news += __mod;	  __beg = __pads;	  __beglen = __plen;	  __end = const_cast<char_type*>(__olds + __mod);	}      else	{	  // Padding first.	  __beg = __pads;	  __beglen = __plen;	  __end = const_cast<char_type*>(__olds);	}      traits_type::copy(__news, __beg, __beglen);      traits_type::copy(__news + __beglen, __end, __newlen - __beglen - __mod);    }  template<typename _CharT, typename _Traits>    basic_ostream<_CharT, _Traits>&    operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)    {      typedef basic_ostream<_CharT, _Traits> __ostream_type;      __ostream_type::sentry __cerb(__out);      if (__cerb)	{	  try {	    streamsize __w = __out.width();	    _CharT __pads[__w];	    __pads[0] = __c;	    streamsize __len = 1;	    if (__w > __len)	      {		_S_pad_char(__out, __pads, &__c, __w, __len);		__s = __pads;		__len = __w;	      }	    __out.write(__pads, __len);	    __out.width(0);	  }	  catch(exception& __fail){	    // 27.6.1.2.1 Common requirements.	    // Turn this on without causing an ios::failure to be thrown.	    __out.setstate(ios_base::badbit);	    if ((__out.exceptions() & ios_base::badbit) != 0)	      throw;	  }	}      return __out;    }  // Specialization  template <class _Traits>     basic_ostream<char, _Traits>&    operator<<(basic_ostream<char, _Traits>& __out, char __c)    {      typedef basic_ostream<char, _Traits> __ostream_type;      __ostream_type::sentry __cerb(__out);      if (__cerb)	{	  try {	    streamsize __w = __out.width();	    char __pads[__w + 1];	    __pads[0] = __c;	    streamsize __len = 1;	    if (__w > __len)	      {		_S_pad_char(__out, __pads, &__c, __w, __len);		__len = __w;	      }	    __out.write(__pads, __len);	    __out.width(0);	  }	  catch(exception& __fail){	    // 27.6.1.2.1 Common requirements.	    // Turn this on without causing an ios::failure to be thrown.	    __out.setstate(ios_base::badbit);	    if ((__out.exceptions() & ios_base::badbit) != 0)	      throw;	  }	}      return __out;     }  template<typename _CharT, typename _Traits>    basic_ostream<_CharT, _Traits>&    operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)    {      typedef basic_ostream<_CharT, _Traits> __ostream_type;      __ostream_type::sentry __cerb(__out);      if (__cerb)	{	  try {	    streamsize __w = __out.width();	    _CharT __pads[__w];	    streamsize __len = static_cast<streamsize>(_Traits::length(__s));	    if (__w > __len)	      {		_S_pad_char(__out, __pads, __s, __w, __len);		__s = __pads;		__len = __w;	      }	    __out.write(__s, __len);	    __out.width(0);	  }	  catch(exception& __fail){	    // 27.6.1.2.1 Common requirements.	    // Turn this on without causing an ios::failure to be thrown.	    __out.setstate(ios_base::badbit);	    if ((__out.exceptions() & ios_base::badbit) != 0)	      throw;	  }	}      return __out;    }  template<typename _CharT, typename _Traits>    basic_ostream<_CharT, _Traits> &    operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)    {#if 0      typedef basic_ostream<_CharT, _Traits>   		__ostream_type;      typedef typename _Traits::state_type              __state_type;      typedef codecvt<char, _CharT, __state_type>       __codecvt_type;      typedef typename __ostream_type::char_type	__char_type;      __ostream_type::sentry __cerb(__out);      if (__cerb)	{	  const __codecvt_type* __fcvt = &use_facet<__codecvt_type>(__out.getloc());	  try {	    streamsize __n = char_traits<char>::length(__s);	    __char_type __conv[__n];	    __state_type __state_cur;	    __char_type __pbuf[__n];	      	    __char_type* __pend;	    char* __send;	    __fcvt->out(__state_cur, 			__pbuf, __pbuf + __n,			const_cast<const __char_type*&>(__pend),			const_cast<char*>(__s), 			const_cast<char*>(__s + __n),			__send);	    __out.write(__pbuf, __n);	  }#endif    }  // Partial specializationss  template<class _Traits>    basic_ostream<char, _Traits>&    operator<<(basic_ostream<char, _Traits>& __out, const char* __s)    {      typedef basic_ostream<char, _Traits> __ostream_type;      __ostream_type::sentry __cerb(__out);      if (__cerb)	{	  try {	    streamsize __w = __out.width();	    char __pads[__w];	    streamsize __len = static_cast<streamsize>(_Traits::length(__s));	    if (__w > __len)	      {		_S_pad_char(__out, __pads, __s, __w, __len);		__s = __pads;		__len = __w;	      }	    __out.write(__s, __len);	    __out.width(0);	  }	  catch(exception& __fail){	    // 27.6.1.2.1 Common requirements.	    // Turn this on without causing an ios::failure to be thrown.	    __out.setstate(ios_base::badbit);	    if ((__out.exceptions() & ios_base::badbit) != 0)	      throw;	  }	}      return __out;    }  // 21.3.7.8 basic_string::operator<<  template<typename _CharT, typename _Traits, typename _Alloc>    basic_ostream<_CharT, _Traits>&    operator<<(basic_ostream<_CharT, _Traits>& __out,	       const basic_string<_CharT, _Traits, _Alloc>& __s)    { return (__out << __s.c_str()); }} // namespace std // Local Variables:// mode:C++// End:

⌨️ 快捷键说明

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