boost lexical_cast <int> 检查
Posted
技术标签:
【中文标题】boost lexical_cast <int> 检查【英文标题】:boost lexical cast <int> check 【发布时间】:2011-12-03 00:36:55 【问题描述】:这应该很容易。我有一个函数可以遍历 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 );
【问题讨论】:
【参考方案1】:看到lexical_cast
抛出失败...
try
number = boost::lexical_cast<int>(*beg);
catch(boost::bad_lexical_cast&)
number = 5;
【讨论】:
【参考方案2】:我通常不喜欢以这种方式使用异常,但这对我有用:
try
number = boost::lexical_cast<int>(*beg);
catch (boost::bad_lexical_cast)
number = 5;
【讨论】:
我很好奇:除了使用boost::optional
,除了例外,您还有什么建议?默默失败?一个神奇的数字意味着它失败了?以上是关于boost lexical_cast <int> 检查的主要内容,如果未能解决你的问题,请参考以下文章
c++ boost lexical_cast double to string
一起学习Boost标准库--Boost.texical_cast&format库