📄 sstream
字号:
template<class _Elem,
class _Traits,
class _Alloc> inline
void swap(basic_stringbuf<_Elem, _Traits, _Alloc>& _Left,
basic_stringbuf<_Elem, _Traits, _Alloc>&& _Right)
{ // swap _Left and _Right basic_stringbufs
typedef basic_stringbuf<_Elem, _Traits, _Alloc> _Myt;
_Left.swap(_STD forward<_Myt>(_Right));
}
template<class _Elem,
class _Traits,
class _Alloc> inline
void swap(basic_stringbuf<_Elem, _Traits, _Alloc>&& _Left,
basic_stringbuf<_Elem, _Traits, _Alloc>& _Right)
{ // swap _Left and _Right basic_stringbufs
typedef basic_stringbuf<_Elem, _Traits, _Alloc> _Myt;
_Right.swap(_STD forward<_Myt>(_Left));
}
// TEMPLATE CLASS basic_istringstream
template<class _Elem,
class _Traits,
class _Alloc>
class basic_istringstream
: public basic_istream<_Elem, _Traits>
{ // input stream associated with a character array
public:
typedef basic_istringstream<_Elem, _Traits, _Alloc> _Myt;
typedef basic_istream<_Elem, _Traits> _Mybase;
typedef _Alloc allocator_type;
typedef basic_stringbuf<_Elem, _Traits, _Alloc> _Mysb;
typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
explicit basic_istringstream(ios_base::openmode _Mode = ios_base::in)
: _Mybase(&_Stringbuffer),
_Stringbuffer(_Mode | ios_base::in)
{ // construct empty readable character buffer
}
explicit basic_istringstream(const _Mystr& _Str,
ios_base::openmode _Mode = ios_base::in)
: _Mybase(&_Stringbuffer),
_Stringbuffer(_Str, _Mode | ios_base::in)
{ // construct readable character buffer from NTCS
}
basic_istringstream(_Myt&& _Right)
: _Mybase(&_Stringbuffer)
{ // construct by moving _Right
_Assign_rv(_STD forward<_Myt>(_Right));
}
_Myt& operator=(_Myt&& _Right)
{ // move from _Right
_Assign_rv(_STD forward<_Myt>(_Right));
return (*this);
}
void _Assign_rv(_Myt&& _Right)
{ // assign by moving _Right
if (this != &_Right)
{ // different, worth moving
_Stringbuffer.str(_Mystr());
this->swap(_Right);
}
}
void swap(_Myt& _Right)
{ // swap with _Right
if (this != &_Right)
{ // different, swap base and buffer
_Mybase::swap(_Right);
_Stringbuffer.swap(_Right._Stringbuffer);
}
}
void swap(_Myt&& _Right)
{ // swap with _Right
_Assign_rv(_STD forward<_Myt>(_Right));
}
virtual ~basic_istringstream()
{ // destroy the object
}
_Mysb *rdbuf() const
{ // return pointer to file buffer
return ((_Mysb *)&_Stringbuffer);
}
_Mystr str() const
{ // return string copy of character array
return (_Stringbuffer.str());
}
void str(const _Mystr& _Newstr)
{ // replace character array from string
_Stringbuffer.str(_Newstr);
}
private:
_Mysb _Stringbuffer; // the string buffer
};
// basic_istringstream TEMPLATE OPERATORS
template<class _Elem,
class _Traits,
class _Alloc> inline
void swap(basic_istringstream<_Elem, _Traits, _Alloc>& _Left,
basic_istringstream<_Elem, _Traits, _Alloc>& _Right)
{ // swap _Left and _Right basic_istringstreams
_Left.swap(_Right);
}
template<class _Elem,
class _Traits,
class _Alloc> inline
void swap(basic_istringstream<_Elem, _Traits, _Alloc>& _Left,
basic_istringstream<_Elem, _Traits, _Alloc>&& _Right)
{ // swap _Left and _Right basic_istringstreams
typedef basic_istringstream<_Elem, _Traits, _Alloc> _Myt;
_Left.swap(_STD forward<_Myt>(_Right));
}
template<class _Elem,
class _Traits,
class _Alloc> inline
void swap(basic_istringstream<_Elem, _Traits, _Alloc>&& _Left,
basic_istringstream<_Elem, _Traits, _Alloc>& _Right)
{ // swap _Left and _Right basic_istringstreams
typedef basic_istringstream<_Elem, _Traits> _Myt;
_Right.swap(_STD forward<_Myt>(_Left));
}
// TEMPLATE CLASS basic_ostringstream
template<class _Elem,
class _Traits,
class _Alloc>
class basic_ostringstream
: public basic_ostream<_Elem, _Traits>
{ // output stream associated with a character array
public:
typedef basic_ostringstream<_Elem, _Traits, _Alloc> _Myt;
typedef basic_ostream<_Elem, _Traits> _Mybase;
typedef _Alloc allocator_type;
typedef basic_stringbuf<_Elem, _Traits, _Alloc> _Mysb;
typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
explicit basic_ostringstream(ios_base::openmode _Mode = ios_base::out)
: _Mybase(&_Stringbuffer),
_Stringbuffer(_Mode | ios_base::out)
{ // construct empty writable character buffer
}
explicit basic_ostringstream(const _Mystr& _Str,
ios_base::openmode _Mode = ios_base::out)
: _Mybase(&_Stringbuffer),
_Stringbuffer(_Str, _Mode | ios_base::out)
{ // construct writable character buffer from NTCS
}
basic_ostringstream(_Myt&& _Right)
: _Mybase(&_Stringbuffer)
{ // construct by moving _Right
_Assign_rv(_STD forward<_Myt>(_Right));
}
_Myt& operator=(_Myt&& _Right)
{ // move from _Right
_Assign_rv(_STD forward<_Myt>(_Right));
return (*this);
}
void _Assign_rv(_Myt&& _Right)
{ // assign by moving _Right
if (this != &_Right)
{ // different, worth moving
_Stringbuffer.str(_Mystr());
this->swap(_Right);
}
}
void swap(_Myt& _Right)
{ // swap with _Right
if (this != &_Right)
{ // different, swap base and buffer
_Mybase::swap(_Right);
_Stringbuffer.swap(_Right._Stringbuffer);
}
}
void swap(_Myt&& _Right)
{ // swap with _Right
_Assign_rv(_STD forward<_Myt>(_Right));
}
virtual ~basic_ostringstream()
{ // destroy the object
}
_Mysb *rdbuf() const
{ // return pointer to buffer
return ((_Mysb *)&_Stringbuffer);
}
_Mystr str() const
{ // return string copy of character array
return (_Stringbuffer.str());
}
void str(const _Mystr& _Newstr)
{ // replace character array from string
_Stringbuffer.str(_Newstr);
}
private:
_Mysb _Stringbuffer; // the string buffer
};
// basic_ostringstream TEMPLATE OPERATORS
template<class _Elem,
class _Traits,
class _Alloc> inline
void swap(basic_ostringstream<_Elem, _Traits, _Alloc>& _Left,
basic_ostringstream<_Elem, _Traits, _Alloc>& _Right)
{ // swap _Left and _Right basic_ostringstreams
_Left.swap(_Right);
}
template<class _Elem,
class _Traits,
class _Alloc> inline
void swap(basic_ostringstream<_Elem, _Traits, _Alloc>& _Left,
basic_ostringstream<_Elem, _Traits, _Alloc>&& _Right)
{ // swap _Left and _Right basic_ostringstreams
typedef basic_ostringstream<_Elem, _Traits, _Alloc> _Myt;
_Left.swap(_STD forward<_Myt>(_Right));
}
template<class _Elem,
class _Traits,
class _Alloc> inline
void swap(basic_ostringstream<_Elem, _Traits, _Alloc>&& _Left,
basic_ostringstream<_Elem, _Traits, _Alloc>& _Right)
{ // swap _Left and _Right basic_ostringstreams
typedef basic_ostringstream<_Elem, _Traits> _Myt;
_Right.swap(_STD forward<_Myt>(_Left));
}
// TEMPLATE CLASS basic_stringstream
template<class _Elem,
class _Traits,
class _Alloc>
class basic_stringstream
: public basic_iostream<_Elem, _Traits>
{ // input/output stream associated with a character array
public:
typedef basic_stringstream<_Elem, _Traits, _Alloc> _Myt;
typedef basic_iostream<_Elem, _Traits> _Mybase;
typedef _Elem char_type;
typedef _Traits traits_type;
typedef _Alloc allocator_type;
typedef typename _Traits::int_type int_type;
typedef typename _Traits::pos_type pos_type;
typedef typename _Traits::off_type off_type;
typedef basic_stringbuf<_Elem, _Traits, _Alloc> _Mysb;
typedef basic_string<_Elem, _Traits, _Alloc> _Mystr;
explicit basic_stringstream(ios_base::openmode _Mode =
ios_base::in | ios_base::out)
: _Mybase(&_Stringbuffer),
_Stringbuffer(_Mode)
{ // construct empty character buffer
}
explicit basic_stringstream(const _Mystr& _Str,
ios_base::openmode _Mode = ios_base::in | ios_base::out)
: _Mybase(&_Stringbuffer),
_Stringbuffer(_Str, _Mode)
{ // construct character buffer from NTCS
}
basic_stringstream(_Myt&& _Right)
: _Mybase(&_Stringbuffer)
{ // construct by moving _Right
_Assign_rv(_STD forward<_Myt>(_Right));
}
_Myt& operator=(_Myt&& _Right)
{ // move from _Right
_Assign_rv(_STD forward<_Myt>(_Right));
return (*this);
}
void _Assign_rv(_Myt&& _Right)
{ // assign by moving _Right
if (this != &_Right)
{ // different, worth moving
_Stringbuffer.str(_Mystr());
this->swap(_Right);
}
}
void swap(_Myt& _Right)
{ // swap with _Right
if (this != &_Right)
{ // different, swap base and buffer
_Mybase::swap(_Right);
_Stringbuffer.swap(_Right._Stringbuffer);
}
}
void swap(_Myt&& _Right)
{ // swap with _Right
_Assign_rv(_STD forward<_Myt>(_Right));
}
virtual ~basic_stringstream()
{ // destroy the object
}
_Mysb *rdbuf() const
{ // return pointer to buffer
return ((_Mysb *)&_Stringbuffer);
}
_Mystr str() const
{ // return string copy of character array
return (_Stringbuffer.str());
}
void str(const _Mystr& _Newstr)
{ // replace character array from string
_Stringbuffer.str(_Newstr);
}
private:
_Mysb _Stringbuffer; // the string buffer
};
// basic_stringstream TEMPLATE OPERATORS
template<class _Elem,
class _Traits,
class _Alloc> inline
void swap(basic_stringstream<_Elem, _Traits, _Alloc>& _Left,
basic_stringstream<_Elem, _Traits, _Alloc>& _Right)
{ // swap _Left and _Right basic_stringstreams
_Left.swap(_Right);
}
template<class _Elem,
class _Traits,
class _Alloc> inline
void swap(basic_stringstream<_Elem, _Traits, _Alloc>& _Left,
basic_stringstream<_Elem, _Traits, _Alloc>&& _Right)
{ // swap _Left and _Right basic_stringstreams
typedef basic_stringstream<_Elem, _Traits, _Alloc> _Myt;
_Left.swap(_STD forward<_Myt>(_Right));
}
template<class _Elem,
class _Traits,
class _Alloc> inline
void swap(basic_stringstream<_Elem, _Traits, _Alloc>&& _Left,
basic_stringstream<_Elem, _Traits, _Alloc>& _Right)
{ // swap _Left and _Right basic_stringstreams
typedef basic_ostringstream<_Elem, _Traits> _Myt;
_Right.swap(_STD forward<_Myt>(_Left));
}
_STD_END
#pragma warning(pop)
#pragma pack(pop)
#endif /* RC_INVOKED */
#endif /* _SSTREAM_ */
/*
* Copyright (c) 1992-2009 by P.J. Plauger. ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
V5.20:0009 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -