повысить лексический состав <int>проверка - PullRequest
2 голосов
/ 03 декабря 2011

Это должно быть легко.У меня есть функция, которая обходит CSV и токенизирует на основе запятых и делает вещи с токенами.Одна из этих вещей - преобразовать его в 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 ]

4 голосов
/ 03 декабря 2011

Видя, как lexical_cast выбрасывает при неудаче ...

try {
    number = boost::lexical_cast<int>(*beg);
}
catch(boost::bad_lexical_cast&) {
    number = 5;
}
3 голосов
/ 03 декабря 2011

Обычно я не люблю использовать исключения таким образом, но у меня это сработало:

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