progress_timer继承自timer,但是精度为2,为了扩展精度,我们自己实现一个类,代码如下:
#include <iostream> #include<boost/progress.hpp> #include <boost/static_assert.hpp> using namespace std; using namespace boost; template<int N=2> class new_progress_timer :public timer{ public: new_progress_timer(ostream &os=cout):m_os(os){ BOOST_STATIC_ASSERT(N>=0&&NULL<=10); } ~new_progress_timer(){ try{ istream::fmtflags old_flags=m_os.setf(istream::fixed,istream::floatfield); streamsize old_prec=m_os.precision(N); //输出时间 m_os<<elapsed()<<"s\n"<<endl; //恢复流的状态 m_os.flags(old_flags); m_os.precision(old_prec); }catch(...){ //do nothing } } private: ostream &m_os; }; int _tmain(int argc, _TCHAR* argv[]) { new_progress_timer<10> t; //cout<<t.elapsed(); 这里不需要亲自调用,当超过t的作用域的时候自动调用 return 0; }
==============================================================================
本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2012/03/26/2418275.html,如需转载请自行联系原作者