【发布时间】:2014-01-06 19:03:24
【问题描述】:
我想解析像“start abc end”这样的输入来提取“abc”。
这是我的测试代码:
#include <boost/spirit/include/qi.hpp>
#include <ostream>
namespace qi = boost::spirit::qi;
int main(int argc, char* argv[])
{
typedef std::string::const_iterator iterator;
qi::rule<iterator, std::string(), qi::space_type> rule =
"start" >>
qi::lexeme[+qi::char_] >>
"end";
std::string input("start abc end");
auto iter = input.begin();
std::string result;
qi::phrase_parse(iter, input.end(), rule, qi::space, result);
std::cout << "Result: " << result << std::endl;
}
输出是“结果:abc end”。
【问题讨论】:
-
请注意,如果您要检查
qi::phrase_parse的结果,您会看到解析失败。 -
我注意到了这一点并假设因为“end”被提前消耗,解析器无法完成匹配。
-
我无法编译您的代码,您使用的是哪个版本的 boost?
标签: c++ boost boost-spirit boost-spirit-qi