标签:c++ iomanip cout io ostream
std::cout << std::setw(8) << std::setfill('0')
_MRTIMP2 _Smanip<streamsize> __cdecl setw(streamsize wide) { // manipulator to set width return (_Smanip<streamsize>(&swfun, wide)); }
// FUNCTION setw static void __cdecl swfun(ios_base& iostr, streamsize wide) { // set width iostr.width(wide); }
// TEMPLATE STRUCT _Smanip template<class _Arg> struct _Smanip { // store function pointer and argument value _Smanip(void (__cdecl *_Left)(ios_base&, _Arg), _Arg _Val) : _Pfun(_Left), _Manarg(_Val) { // construct from function pointer and argument value } void (__cdecl *_Pfun)(ios_base&, _Arg); // the function pointer _Arg _Manarg; // the argument value };In this case _Pfun is swfun, _arg is wide
template<class _Elem, class _Traits, class _Arg> inline basic_ostream<_Elem, _Traits>& operator<<( basic_ostream<_Elem, _Traits>& _Ostr, const _Smanip<_Arg>& _Manip) { // insert by calling function with output stream and argument (*_Manip._Pfun)(_Ostr, _Manip._Manarg); return (_Ostr); }
标签:c++ iomanip cout io ostream
原文地址:http://blog.csdn.net/peanutandchestnut/article/details/43601619