c++ io manipulator
来源:互联网 发布:双流区2016年公交优化 编辑:程序博客网 时间:2024/09/21 08:57
c++ io manipulator
I use this kind of io manipular now and then.
std::cout << std::setw(8) << std::setfill('0')
Let's look at std::setw first, it's defined as:
_MRTIMP2 _Smanip<streamsize> __cdecl setw(streamsize wide){// manipulator to set widthreturn (_Smanip<streamsize>(&swfun, wide));}
// FUNCTION setwstatic void __cdecl swfun(ios_base& iostr, streamsize wide){// set widthiostr.width(wide);}
Now let's look at _Smanip, it's a simple template struct, it contains a function pointer which will set property of ios_base and an template arg
// TEMPLATE STRUCT _Smaniptemplate<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
At last , iomanip override operator<<
template<class _Elem,class _Traits,class _Arg> inlinebasic_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);}
In short, iomanipular define a function which do the set job, put this function and arg in a template struct, then override operator<< , get function pointer and arg from this
struct, then set property of ios.
struct, then set property of ios.
0 0
- IO Stream Manipulator
- c++ io manipulator
- Manipulator explore
- Manipulator Jacobian
- On Manipulator Calibration
- SoSlection Pick Filter Manipulator
- osg demo3 add manipulator
- c++io
- 货币操纵国 currency manipulator
- 创建 osg manipulator 的关键
- osg视图操作关于Manipulator
- manipulator and setiosflags and limit width
- Rigid Body Velocity and Manipulator Jacobian
- c语言IO函数
- C#-System.IO
- c++IO 操作
- c的IO
- C#IO流详解
- 蓝桥杯:十六进制转八进制
- 算法竞赛入门经典_第七章 暴力求解法_7.2枚举排列:生成1~n的排列
- 【OpenCV归纳】1 体验OpenCV
- Android开发设计模式系列集锦
- leetcode_25_Reverse Nodes in k-Group
- c++ io manipulator
- Android源码分析-全面理解Context
- 对一道面试题的总结与扩展思考(关于一笔画问题的数学分析)
- Android 记事本NotePad
- (二十二)常用方法(工具方法)的抽取
- 【OpenCV归纳】2 读写视频
- Eclipse自动提示功能失效(ctrl + /)解决办法
- 【c++笔记十三】c++中的输入、输出和文件操作
- windows MySQL报"2006 - MySQL server has gone away"错误,解决过程.