●timer库

#include <boost\timer.hpp>
#include <boost\progress.hpp>

1、timer类

// timer类的示例。
void Lib_Demo_timer::Demo_timer()
{
timer t; cout << "可度量的最大单位:" << t.elapsed_max() / 3600 << "小时" << endl;
cout << "可度量的最小单位:" << t.elapsed_min() << "s" << endl;
cout << "计时开始...按任意键计时" << endl;
system("pause");
cout << "已经过的时间:" << t.elapsed() << "s" << endl;
}

输出:

可度量的最大单位:596.523小时

可度量的最小单位:0.001s

计时开始...按任意键计时

请按任意键继续. . .

已经过的时间:0.74s

请按任意键继续. . .

2、process类

// progress类的示例。
void Lib_Demo_timer::Demo_process(void)
{
{
boost::progress_timer t;
cout << "需要计时的代码块1" << endl;
system("pause");
} stringstream ss;
{
boost::progress_timer t(ss);
cout << "需要计时的代码块2" << endl;
system("pause");
}
cout << ss.str() << endl;
}

输出:

需要计时的代码块1

请按任意键继续. . .

0.96 s

需要计时的代码块2

请按任意键继续. . .

1.66 s

请按任意键继续. . .

3、progress_display类

// progress_display类的示例。
void Lib_Demo_timer::Demo_progress_display(void)
{
vector<string> v(100); progress_display pd(v.size()); for(vector<string>::const_iterator i = v.begin(); i != v.end(); ++i)
{
//针对i的处理
Sleep(100); ++pd;
} }

输出:

0%   10   20   30   40   50   60   70   80   90   100%

|----|----|----|----|----|----|----|----|----|----|

***************************************************

请按任意键继续. . .

●date_time库

1、引用库的方式

(1)、包含源码的方式:通过启用宏 BOOST_DATE_TIME_SOURCE 等。

#define BOOST_DATE_TIME_SOURCE
#define BOOST_DATE_TIME_NO_LIB #include <libs/date_time/src/gregorian/greg_names.hpp>
#include <libs/date_time/src/gregorian/date_generators.cpp>
#include <libs/date_time/src/gregorian/greg_month.cpp>
#include <libs/date_time/src/gregorian/greg_weekday.cpp>
#include <libs/date_time/src/gregorian/gregorian_types.cpp>

注意:如果使用的boost版本较高,那么在使用(较低版本)STLport标准库时会编译错误,解决方法是使用VC的标准库。

(2)、包含已编译库的方式

#include <boost/date_time/gregorian/gregorian.hpp>

需要在项目配置的“库目录”中增加boost编译库的路径。

2、定义日期对象 date

头文件

#include <boost/date_time/gregorian/gregorian.hpp>
    // date 初始化示例
boost::gregorian::date d1; //默认创建一个 无效日期
//宏 DATE_TIME_NO_DEFAULT_CONSTRUCTOR 可以禁用 构造无效日期的 默认构造函数
date d2(2010, 1, 1);
date d3(2000, Jan, 1); //使用英文指定月份
date d4(d2); assert(d1 == date(boost::date_time::special_values::not_a_date_time));
assert(d2 == d4); //date支持比较操作
assert(d3 < d4);
//从字符串创建
//注意:包含源码是依赖 #include <libs/date_time/src/gregorian/greg_month.cpp>
date d1_1 = boost::gregorian::from_string("1999-12-31");
date d2_1(boost::gregorian::from_string("2005/1/1"));
date d3_1 = boost::gregorian::from_undelimited_string("20011118");
//使用 day_clock 创建,返回当天日期对象,注意:依赖操作系统的时区设置
cout << boost::gregorian::day_clock::local_day() << endl;
cout << day_clock::local_day_ymd << endl;
cout << day_clock::universal_day() << endl;
cout << day_clock::universal_day_ymd << endl;
//创建特殊日期
date d1_2(special_values::neg_infin); //负无限日期
date d2_2(special_values::pos_infin); //正无限日期
date d3_2(special_values::not_a_date_time); //无效日期
date d4_2(special_values::max_date_time); //最大可能日期9999-12-31
date d5_2(special_values::min_date_time); //最小可能日期1400-01-01
//异常创建,boost会抛出异常。
date d1_3(1399, 12, 1);
date d2_3(10000, 1, 1);
date d3_3(2010, 2, 29);

《Boost程序库完全开发指南》读书笔记-日期时间的更多相关文章

  1. boost------signals2的使用2(Boost程序库完全开发指南)读书笔记

    1.应用于观察者模式 本小节将使用signals2开发一个完整的观察者模式示例程序,用来演示信号/插槽的用法.这个程序将模拟一个日常生活场景:客人按门铃,门铃响,护士开门,婴儿哭闹. Ring.h: ...

  2. boost------function的使用(Boost程序库完全开发指南)读书笔记

    function是一个函数对象的“容器”,概念上像是c/c++中函数指针类型的泛化,是一种“智能函数指针”.它以对象的形式封装了原始的函数指针或函数对象,能够容纳任意符合函数签名的可调用对象. 因此, ...

  3. boost------asio库的使用1(Boost程序库完全开发指南)读书笔记

    asio库基于操作系统提供的异步机制,采用前摄器设计模式(Proactor)实现了可移植的异步(或者同步)IO操作,而且并不要求多线程和锁定,有效地避免了多线程编程带来的诸多有害副作用. 目前asio ...

  4. boost------asio库的使用2(Boost程序库完全开发指南)读书笔记

    网络通信 asio库支持TCP.UDP.ICMP通信协议,它在名字空间boost::asio::ip里提供了大量的网络通信方面的函数和类,很好地封装了原始的Berkeley Socket Api,展现 ...

  5. boost------bind的使用(Boost程序库完全开发指南)读书笔记

    bind是c++98标准库中函数适配器bind1st/bind2nd的泛化和增强,可以适配任意的可调用类型,包括函数指针.函数引用.成员函数指针和函数对象. 1.工作原理 bind并不是一个单独的类或 ...

  6. [转] boost------ref的使用(Boost程序库完全开发指南)读书笔记

    http://blog.csdn.net/zengraoli/article/details/9663057 STL和Boost中的算法和函数大量使用了函数对象作为判断式或谓词参数,而这些参数都是传值 ...

  7. boost------signals2的使用1(Boost程序库完全开发指南)读书笔记

    signals2基于Boost的另一个库signals,实现了线程安全的观察者模式.在signals2库中,观察者模式被称为信号/插槽(signals and slots),他是一种函数回调机制,一个 ...

  8. boost------ref的使用(Boost程序库完全开发指南)读书笔记

    STL和Boost中的算法和函数大量使用了函数对象作为判断式或谓词参数,而这些参数都是传值语义,算法或函数在内部保修函数对象的拷贝并使用,例如: #include "stdafx.h&quo ...

  9. Boost程序库完全开发指南——深入C++“准”标准库(第3版)

    内容简介  · · · · · · Boost 是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉. Boost 由C++标准委员会部分成员所设立的Bo ...

随机推荐

  1. 查看文件系统类型的Linux命令

    不需挂载就能查看的命令:   1. file  [root@localhost dev]# file -s /dev/sda1 /dev/sda1: Linux rev 1.0 ext4 filesy ...

  2. == 与 is

    Python中的对象包含三要素:id.type.valueid:用来唯一标识一个对象: type:标识对象的类型: value是对象的值. ==是判断对象的值是否相等,也就是value,is是判断对象 ...

  3. 魔法方法:算术运算 - 零基础入门学习Python042

    魔法方法:算术运算 让编程改变世界 Change the world by program 我现在重新提一个名词:工厂函数,不知道大家还有没有印象?我们在老早前就提到过Ta,由于那时候我们还没有学习类 ...

  4. OpenStack REST API使用

    以前一直想写博客,但因各种因素一直没写.最近在做OpenStack,而OpenStack对外提供REST API,今天就简要介绍一下OpenStack REST API 使用,关于什么是REST AP ...

  5. Android json操作之取得一个对象

    1:服务端返回的json数据格式如下: {"id":"1001","name":"zhangsan","sco ...

  6. uva 10036 Problem C: Divisibility

    题意:能否在一个整数序列的每相邻的两项之间添加一个加减号,使得最终结果能被一个给定整数K<=100整除. dp[i][j]表示第i个数取余k为j的布尔值. #include <cstdio ...

  7. 11g v$session定位客户端IP

    11g v$session 新增PORT 字段 用于描述客户端的端口号 客户机从10.5.129.180 访问10.5.128.28 [oracle@cpool ~]$ netstat -na | g ...

  8. iOS项目更新之升级Xcode7 & iOS9

    金田 前言      Apple 的WWDC所发布内容在给大家带来惊喜之际,给各位iOS开发的同仁却也带来了不同程度的麻烦.首先不讲新功能,就单指原来老版本的项目升级.代码升级,就是一堆问题,而且是不 ...

  9. WC2015流水账

    THU那四场考试没考好,只有20+名.这也许是我OI生涯中最后一场吧(已确认是最后一场),真是感慨万千. day0 搬进浙大宿舍404房间(神房间号),四个人一间.中午发现学军伙食相当良心,是我参加的 ...

  10. 大型分布式C++框架《一:框架简介》

    首先名字要取得霸气才能吸引人气,哈哈~~ 下面简单介绍下情况.框架是腾讯电商平台的分布式框架.虽然腾讯拍拍已经玩完了.但是这套框架还是很不错的.而且据原腾讯同事说微信也是用的这套框架.源码肯定是不能说 ...