C++ 使用boost::spirit匹配单词
我想创建一个解析器,它将恰好匹配字符串中的两个字母数字单词,例如:C++ 使用boost::spirit匹配单词,c++,parsing,boost,boost-spirit,C++,Parsing,Boost,Boost Spirit,我想创建一个解析器,它将恰好匹配字符串中的两个字母数字单词,例如: message1 message2 然后将其保存到std::string类型的两个变量中 我已经读过这篇文章,它似乎需要无数次的重复,它使用了以下解析器: +qi::alnum % +qi::space 但是,当我尝试这样做时: bool const result = qi::phrase_parse( input.begin(), input.end(), +qi::aln
message1 message2
然后将其保存到std::string类型的两个变量中
我已经读过这篇文章,它似乎需要无数次的重复,它使用了以下解析器:
+qi::alnum % +qi::space
但是,当我尝试这样做时:
bool const result = qi::phrase_parse(
input.begin(), input.end(),
+qi::alnum >> +qi::alnum,
+qi::space,
words
);
单词
向量包含不同字符串中的每个字母:
't'
'h'
'i'
's'
'i'
's'
这是非常违反直觉的,我不知道为什么会发生这种情况。有人能解释一下吗
另外,我可以有两个预定义的字符串来代替std::vector来填充吗
最后一点注意:我希望避免使用语句,因为我希望清楚地定义每个名称空间,以帮助我理解Spirit是如何工作的 是的,但在您对其采取行动之前,跳过程序会忽略空白 使用
lexeme
控制跳绳器:
bool const result = qi::phrase_parse(
input.begin(), input.end(),
qi::lexeme [+qi::alnum] >> qi::lexeme [+qi::alnum],
qi::space,
words
);
注意,跳过符应该是qi::space
,而不是+qi::space
另见