【发布时间】:2016-05-18 16:44:18
【问题描述】:
我不明白这两个运算符之间的区别。让我们举个例子,将"AA,BB,CC,DD" 之类的输入解析为字符串向量。
namespace qi = boost::spirit::qi;
class my_grammar : public qi::grammar<string::const_iterator, string()>
{
public:
my_grammar() : base_type(start) {
using qi::_1;
using qi::char_;
start = *(char_ - qi::lit(','));
}
qi::rule<string::const_iterator, string()> start;
};
据我所知,a %= b 等同于a = b[_val = _1]。这很清楚。但另一方面,解析器*(char_ - qi::lit(',')) 具有类型为std::string 的合成属性,匹配的序列将分配给该属性。使用start = *(char_ - qi::lit(',')) 的结果是一样的。那么使用运算符%=是什么情况呢?
【问题讨论】:
标签: c++ boost boost-spirit-qi