Я пытаюсь определить, является ли данная строка допустимым двойным представлением. Код, который я использую, выглядит так:
bool testNumeric(const std::string& s)
{
try
{
const auto doubleParser = boost::spirit::x3::double_;
auto iter = s.begin();
auto end_iter = s.end();
double result = 0.;
boost::spirit::x3::parse(iter, end_iter, doubleParser, result);
return iter == end_iter;
}
catch (...)
{
return false;
}
}
Полученный дубль меня не интересует (пока). Если я дам этой функции вход "1e10000000", что явно слишком велико для двойного числа, программа завершится ошибкой с утверждением (BOOST_ASSERT). Можно ли это как-то изменить, чтобы либо сбой по коду возврата, либо исключение, которое я могу поймать? Или мне нужно написать свой собственный двойной парсер с spirit::x3?
std::stod
илиstd::strtod
? - person Some programmer dude   schedule 13.02.2019pos
для обнаружения завершающих символов. - person Alan Birtles   schedule 13.02.2019std::stod
с аргументомpos
иstd::strtod
с аргументомstr_end
. - person Some programmer dude   schedule 13.02.2019