2011-12-03 5 views
2

これは簡単なものです。私はcsvを横断し、コンマに基づいてトークン化し、トークンで物事を行う関数を持っています。これらのうちの1つは、intに変換されます。残念ながら、最初のトークンは必ずしもintであるとは限りません。そうでない場合は、「5」に設定したいと思います。現在ブースト語彙キャスト<int>チェック

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

は見て...

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

私は、通常の例外をこのように使うのが好きではありませんが、これは私のために働いている:lexical_castが失敗した場合にスローされますよう

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

私は不思議です: 'boost :: optional'の使用以外に、あなたは例外の他に何をお勧めしますか?静かに失敗しますか?それが失敗したことを意味する魔法の数字? –

関連する問題