【问题标题】:Make Boost.Spirit parser to skip all spaces使 Boost.Spirit 解析器跳过所有空格
【发布时间】:2014-02-22 17:56:37
【问题描述】:
#include <iostream>
#include <boost/spirit/include/qi.hpp>

namespace qi = boost::spirit::qi;
int main ()
{
    std::string input("   aaa   ");
    std::string::iterator strbegin = input.begin();
    std::string p;
    qi::phrase_parse(strbegin, input.end(),
            qi::lexeme[+qi::char_],
            qi::space,                  
            p);                               

    std::cout << p << std::endl;
    std::cout << p.size() << std::endl;
}

在此代码解析器中,将"aaa " 分配给p。为什么不跳过所有空格?我希望p"aaa"。怎么解决?

【问题讨论】:

    标签: c++ parsing boost boost-spirit


    【解决方案1】:

    您要求 Spirit 发出带有qi::lexeme 的空格。比较:http://www.boost.org/doc/libs/1_55_0/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html

    规则+(qi::char_ - qi::space) 应该这样做。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多