Boost库学习(2) 时间与日期
一、背景
C++缺乏对时间和日期的处理能力,不得不求助于C,使用笨拙的结构和函数(struct tm,time())。现在,Boost使用timer和date_time解决了这个问题。
二、timer简介
1、timer是一个很小的库,提供简易的度量时间和进度显示功能,可以用于性能测试等需要计时的任务。它包含三个组件:分别是 计时类 timer、progress_timer和进度指示类progress_display
2、组件介绍
作用 | 需包含的头文件 | 其他说明 | |
timer | 测量时间的流逝,提供毫秒级别的计时精度和操作函数 |
#include<boost/timer.hpp> using namespace boost; |
常用成员函数: elapsed_min():timer测量时间的最小精度; elapsed_max():timer测量时间的最大范围; |
progress_timer | 也是一个计时器,继承自timer,会在析构时自动输出时间 |
#include<boost/progress.hpp> using namespace boost; |
其构造函数说明: progress_timer(std::ostream& os),允许将析构输出定向到指定的IO流里; |
progress_display | 在控制台上显示程序执行的进度 |
#include<boost/progress.hpp> using namespace boost; |
缺陷: 无法把进度显示输出和程序输出分离; |
三、date_time库简介(有待进一步整理)
处理日期和时间(取当地日期时间,日期时间的运算,与tm机构的转换,日期时间的格式化等),
四、总结
1、基于跨平台可移植的指导思想,timer实现源码中使用了C标准中的std::clock();
2、timer和progress_timer是计时小工具,精度不够但是好用够用,特别是progress_timer,利用了C++析构函数会被自动调用的特点能够自动显示时间;
3、progress_display可显示程序执行的进度,但是容易被程序其他的输出打乱;
4、progress_timer和progress_display均私有继承了noncopyable类,防止被无意的拷贝而破坏了正确的行为;
5、date_time填补了C++98中“时间和日期”的空白;