2

这应该是一件容易的事。我有一个函数可以遍历 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 );
}
4

2 回答 2

4

将失败视为lexical_cast抛出...

try {
    number = boost::lexical_cast<int>(*beg);
}
catch(boost::bad_lexical_cast&) {
    number = 5;
}
于 2011-12-03T00:40:28.167 回答
3

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

try {
    number = boost::lexical_cast<int>(*beg);
} catch (boost::bad_lexical_cast) {
    number = 5;
}
于 2011-12-03T00:40:09.153 回答