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 lexical_cast <int> 检查

用boost::lexical_cast进行数值转换

一起学习Boost标准库--Boost.texical_cast&format库

boost::lexical_cast int 用零填充字符串

在 C++ 中使用 boost::lexical_cast 将双精度转换为字符串?