Boost教程(六)其他杂项

类型转换lexical_cast

最近发现除了Qt外,用boost做一些类型转换也很好,这样可以避开QString这样的Qt数据类型了,需要使用的时模板函数lexical_cast,需要try catch

1
2
3
4
5
6
7
8
9
try
{
string s = "123";
int num = boost::lexical_cast<int>(s);
}
catch (boost::bad_lexical_cast& e)
{
cout<<e.what()<<endl;
}

BOOST_FOREACH

只需要头文件#include <boost/foreach.hpp>

1
2
3
4
5
6
7
8
9
10
11
vector<int> ages;
ages.reserve(20);
ages.push_back(2);
ages.push_back(9);
ages.push_back(14);
ages.push_back(27);
ages.push_back(39);
BOOST_FOREACH(int age, ages)
{
cout<< age <<endl;
}

实际使用中,最好定义一个宏:#define Foreach BOOST_FOREACH,宏最好不要是foreach,容易跟其他库(例如Qt)冲突