我正在使用 Boost 1.44,Spirit 解析器非常适合数字解析,但对于字符串解析确实很棘手。我正在尝试使用多个分隔符解析要拆分的字符串:',',';' 或者 ' '。当我这样做时它适用于数字(其中 vect = vector < double >):
qi::parse(first,last,double_ >> *(',' >> double_ | ' ' >> double_ | ';' >> double_),
矢量,空间);
但是,当我使用 vect = vector< string > 修改字符串的语法时,
+char_ >> *(',' >> +char_ | ' ' >> +char_ | ';' >> +char_)
我收到以下错误:
/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:109:13: error: invalid conversion from ‘char’ to ‘const char*’/usr/include/boost/spirit/home/qi/detail/assign_to.hpp:109:13: error: initializing argument 1 of ‘std::basic_string<_CharT, _Traits,_Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]’
我将错误缩小为语法语法中的第一个 +char_ ,它被视为一系列字符而不是字符串。有没有办法解决这个问题?
谢谢