boost lexical_cast <int> check </int>

时间:2011-12-03 00:36:55

标签: c++ boost casting lexical-cast boost-tokenizer

这应该很简单。我有一个函数遍历csv并基于逗号进行标记,并使用标记执行操作。其中一个是将其转换为int。不幸的是,第一个令牌可能并不总是一个int,所以当它不是时,我想把它设置为“5”。

目前:

t_tokenizer::iterator beg = tok.begin();
if(*beg! )   // something to check if it is an int...
{
    number =5;
}
else
{
    number = boost::lexical_cast<int>( *beg );
}

2 个答案:

答案 0 :(得分:4)

看到lexical_cast失败......

try {
    number = boost::lexical_cast<int>(*beg);
}
catch(boost::bad_lexical_cast&) {
    number = 5;
}

答案 1 :(得分:3)

我通常不喜欢以这种方式使用例外,但这对我有用:

try {
    number = boost::lexical_cast<int>(*beg);
} catch (boost::bad_lexical_cast) {
    number = 5;
}