Bonjour,
J'ai utilisé boost spirit pour lire et afficher une liste de chaines de caractères, mon problème c'est que le parseur ne prend pas en compte les espaces. voici un bout de code qui explique qu'est ce que j'ai fais :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 
bool PlanParser::parse(base_iterator_type first, base_iterator_type last)
{
   // using boost::spirit::space_p;
    bool r = boost::spirit::qi::/*phrase_*/parse(
        first,
        last,
        getParser(),
       // ,boost::spirit::qi::char_('!')//eoi//space
       // boost::spirit::space
    );
    if (first != last)
        return false;
    return r;
}
 
boost::spirit::qi::rule<base_iterator_type> PlanParser::getParser()
{
    return *((+(boost::spirit::qi::char_ - boost::spirit::qi::char_(':')))[newPlage]//[boost::bind(&PlanParser::newPlage, this, _1)]
        >> boost::spirit::qi::char_(':')
        >> (boost::spirit::qi::int_ >> boost::spirit::qi::char_('/') >> boost::spirit::qi::int_ >> boost::spirit::qi::char_('/') >> boost::spirit::qi::int_ )[startDate]//[boost::bind(&PlanParser::newPlage, this, _1)]
        >> boost::spirit::qi::char_('-')>> boost::spirit::qi::char_('>')
        >> (boost::spirit::qi::int_ >> boost::spirit::qi::char_('/') >> boost::spirit::qi::int_ >> boost::spirit::qi::char_('/') >> boost::spirit::qi::int_ )[endDate]//[boost::bind(&PlanParser::newPlage, this, _1)]
        >> boost::spirit::qi::char_(':')
        >> (+(boost::spirit::qi::char_- boost::spirit::qi::char_('.')))[name]
        >>boost::spirit::qi::char_('.')
        )
 
    ;
}
J'attend votre aide
Merci