Я хочу поймать boost :: lexicat_cast переполняется так же, как я могу поймать boost :: numeric_cast переполнения.Возможно ли это?
Первый блок try ниже выдает boost :: numeric :: негативное_потока .
Второй блок не выбрасываетисключение (не является ли это 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;
}