1.boost::any
boost::any是一种通用的数据类型,可以将各种类型包装后统一放入容器内
最重要的它是类型安全的。有点象COM里面的variant.
使用方法:
any::type() 返回包装的类型
any_cast可用于any到其他类型的转化
#includevoidtest_any()
{
typedef std::vector<:any>many;
many a;
a.push_back(2);
a.push_back(string("test"));
for(unsignedinti=0;i
{
cout<
try
{
intresult=any_cast(a[i]);
cout<
}catch(boost::bad_any_cast&ex)
{
cout<
} }}
2.boost::array
boost::array仅仅是对数组一层薄薄的封装,提供跟各种算法配合的iterator,使用方法很简单
注意:可以使用{}来初始化array,因为array所有的成员变量都是public的
#includevoidtest_array()
{
arrayai={1,2,3};
for(size_t i=0;i
{
cout<
}}
3.boost::lexical_castlexical_cast用于将字符串转换成各种数字类型(int,float,short etc.)
#includevoidtest_lexical_cast()
{
inti=boost::lexical_cast("123");
cout<
}
4.boost::format
boost::format是用于替代c里面的sprintf,优点是类型安全,不会因为类型和参数不匹配而导致程序崩溃了
而且还可以重复使用参数
#includevoidtest_format()
{
cout<<:format>
format f("a=%1%,b=%2%,c=%3%,a=%1%");
f%"string"%2%10.0;
cout<
}
5.boost::tokenizerboost::tokenizer是用于切割字符串的,类似于Java里面的StringTokenizer。
#includevoidtest_tokenizer()
{
strings("This is , a ,test!");
boost::tokenizer<>tok(s);
for(tokenizer<>::iterator beg=tok.begin(); beg!=tok.end();++beg){
cout<
}}
6.boost::thread
boost::thread是为了提供跨平台的thread机制。利用boost::function来完成委托。
#includevoidmythread()
{
cout<
}
voidtest_thread()
{
boost::functionf(mythread);
boost::thread t(f);
t.join();
cout<
}
7.boost::serializationboost::serialization提供object的序列化功能。而且提供好几种序列化的格式,比如text,binary,xml
#include#include#includevoidtest_serialization()
{
boost::archive::text_oarchive to(cout , boost::archive::no_header);
inti=10;
strings="This is a test\n";
to&i;
to&s;
ofstream f("test.xml");
boost::archive::xml_oarchive xo(f);
xo&BOOST_SERIALIZATION_NVP(i)&BOOST_SERIALIZATION_NVP(s);
boost::archive::text_iarchive ti(cin , boost::archive::no_header);
ti&i&s;
cout<
cout<
}
8.boost::function
boost::function就是所谓的泛函数,能够对普通函数指针,成员函数指针,functor进行委托,达到迟调用的效果
#includeintfoo(intx,inty)
{
cout<
returnx+y;
}
structtest
{
intfoo(intx,inty)
{
cout<
returnx+y;
}};
voidtest_function()
{
boost::functionf;
f=foo;
cout<
test x;
/**//*f = std::bind1st(
std::mem_fun(&test::foo), &x);*/ boost::functionf2;
f2=&test::foo;
cout<
}
9.boost::shared_ptr
boost::shared_ptr就是智能指针的实现,不象std::auto_ptr,它是可以stl的容器一起使用的,非常的方便
#includeclassShared
{
public:
Shared()
{
cout<
} Shared(constShared&other)
{
cout<
}~Shared()
{
cout<
} Shared&operator=(constShared&other)
{
cout<
}};
voidtest_shared_ptr()
{
typedef boost::shared_ptrSharedSP;
typedef vectorVShared;
VShared v;
v.push_back(SharedSP(newShared()));
v.push_back(SharedSP(newShared()));
}