标签: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 widetemplate<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