深入了解STL的流操作

basic_streambuf

6 points(begin,next,end)

class std::ios_base

std::ios

 

using streamoff = long long;
using streamsize = long long;

using streampos = fpos<_Mbstatet>;
using wstreampos = streampos;

template<class _Elem,
	class _Int_type>
	struct _Char_traits

 

operator << 的细节
template<class _Elem,
	class _Traits,
	class _Alloc> inline
	basic_ostream<_Elem, _Traits>& operator<<(
		basic_ostream<_Elem, _Traits>& _Ostr,
		const basic_string<_Elem, _Traits, _Alloc>& _Str)
	{	// insert a string
	return (_Insert_string(_Ostr, _Str.data(), _Str.size()));
	}
	
template<class _Elem,
	class _Traits> inline
	basic_ostream<_Elem, _Traits>&
		__CLRCALL_OR_CDECL endl(basic_ostream<_Elem, _Traits>& _Ostr)
	{	// insert newline and flush stream
	_Ostr.put(_Ostr.widen('\n'));
	_Ostr.flush();
	return (_Ostr);
	}
	
	class std::basic_ostream<_Elem, _Traits>
	{
		basic_ostream& __CLR_OR_THIS_CALL operator<<(basic_ostream& (__cdecl *_Pfn)(basic_ostream&))
		{	// call basic_ostream manipulator
			return ((*_Pfn)(*this));
		}
	}

 


 

posted @ 2020-09-21 12:17  anyboo  阅读(178)  评论(0编辑  收藏  举报