我想捕捉boost::lexicat_cast溢出的方式与捕捉boost::numeric_cast溢出的方式相同。是否可以?
下面的第一个try块抛出boost::numeric::negative_overflow。
第二个块没有抛出异常(这不是lexical_cast错误吗?)
尽管在下面的示例中使用了unsigned int,但我正在寻找一种适用于任何整数类型的方法。
#include <boost/numeric/conversion/cast.hpp>
#include <boost/lexical_cast.hpp>
int main()
{
unsigned int i;
try
{
int d =-23;
i = boost::numeric_cast<unsigned int>(d);
}
catch (const boost::numeric::bad_numeric_cast& e)
{
std::cout << e.what() << std::endl;
}
std::cout << i << std::endl; // 4294967273
try
{
char c[] = "-23";
i = boost::lexical_cast<unsigned int>(c);
}
catch (const boost::bad_lexical_cast& e)
{
std::cout << e.what() << std::endl;
}
std::cout << i << std::endl; // 4294967273
return 0;
}