boost库总结一

progress_display

在控制台显示程序的执行进度,但是无法把进度显示输出与程序的输出分离。

#include<boost/progress.hpp>
using namespace boost;
progress_display pd(long expected_count);
//增加进度
pd++;

date_time

date_time库需要编译。
date_time库的日期基于格里高利历,位于命名空间boost::gregorian。

#include <boost/date_time/gregorian/gregorian.hpp>
using namespace boost;
gregorian::date mydate(2015,12,20);
//转换为字符串
gregorian::to_simple_string(mydate);
gregorian::to_iso_string(mydate);

date对象可以比较,==、>、<等。date对象也可以从字符串构造:

date d1=from_string(“2015-12-20”);
date d2=from_string(“2015/12/20”);
//返回当前的日期对象
gregorian::day_clock::local_day();
//访问日期对象
date.year() date.month() date.day() date.day_of_week() date.day_of_year() date.week_number()
date.is_special()

日期迭代器包括date_iterator、week_iterator、month_iterator、year_iterator,分别以天、周、月和年为单位递减,构造时传入一个起始日期和步长,默认是1个单位。

day_iterator d_iter(date);
d_iter++;

property_tree

property_tree是一个保存了多个属性值的树形数据结构,可以解析xml、ini、json、info四种格式的文本数据。
property_tree位于boost::property_tree。

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <boost/typeof/typeof.hpp>

首先读取xml配置文件

using namespace boost::property_tree;
ptree pt;
read_xml(“conf.xml”,pt);

使用get<type>()通过路径访问属性树内的节点

pt.get<string>(“conf.theme”);
//指定缺省值
pt.get(“conf.number”,100);

lexical_cast数据类型转换

boost::regex的默认正则表达式是perl语法。
如果转换失败,boost::lexical_cast会抛出一个bad_lexical_cast异常。

#include <iostream>
#include <boost/lexical_cast.hpp>
   string s=”123”;
   int a=lexical_cast<int>(s);
   try{
     int c=lexical_cast<int>(“wrong number”);
   }
  catch(bad_lexical_cast &e){
   cout<<e.what()<<endl;
  }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章