Как проверить строку на допустимый двойной контент с boost :: spirit :: x3? - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь определить, является ли данная строка допустимым двойным представлением.Код, который я использую, выглядит следующим образом:

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», который явно слишком велик для double, программа завершается ошибкой с утверждением (BOOST_ASSERT).Можно ли это как-то изменить, чтобы он либо не выполнялся с помощью кода возврата, либо выдает исключение, которое я могу поймать?Или я должен написать свой собственный двойной парсер со спиртом :: x3?

...