LINUX.ORG.RU

Это как сажать комнатные цветы экскаватором. Есть более простые способы для этого.

BRE ★★
()
Ответ на: комментарий от BRE

Тут просто забыт тег «хочется странного».

ТС, там в туториале не так далеко от старта есть нужное. Может можно и проще (я мало spirit использовал, да и для более сложного, естественно), но как рабочий пример:

#include <iostream>
#include <string>

#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix.hpp>

namespace sp = boost::spirit;
namespace phoenix = boost::phoenix;

template <typename I> bool
parse_double(I first, I last, double &val)
{
    using sp::qi::double_;
    using sp::qi::_1;
    using sp::qi::phrase_parse;
    using sp::ascii::space;
    using phoenix::ref;

    return phrase_parse(first, last, double_ [ ref(val) = _1 ], space)
        && first == last;
}

int
main()
{
    std::string line;
    while (std::getline(std::cin, line)) {
        double d;
        if (parse_double(line.begin(), line.end(), d)) {
            std::cout << d << std::endl;
        } else {
            std::cout << "Failed to parse." << std::endl;
        }
    }
}
xaizek ★★★★★
()
Ответ на: комментарий от BRE

Правильно сказал.

pon4ik чем sscanf не подходит? Он шустрый как понос.

Booster ★★
()

BRE, Booster - если бы я это делал с нуля, то не будь я батькой этого самого спирита, я бы туда и не совался. Однако, это часть здорового парсера, который засбоил.

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от xaizek

Хотя, я попробовал, косяк в том как эти парсера скомпонованны а не в самих парсерах видимо.

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от pon4ik

Ну да, для идентичного вывода естественно манипуляторов надо добавить для cout.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

Угу, спасибо, до меня кажется начинает доходить.

Ох уж эти экспресс осиливания всяких шаблонных поделий куда отладчиком не влезть.

pon4ik ★★★★★
() автор топика
Ответ на: комментарий от CatsCantFly

Ещё один :)

Затем что парсинг double, это просто часть большой грамматики.

pon4ik ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.