C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 基于提升精神语法的字符串拆分大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_616_1@
我正在使用Boost 1.44,Spirit解析器适用于数值解析,但对于字符串解析来说真的很棘手.我试图解析一个字符串,使用多个分隔符进行拆分:’,’,’;’要么 ‘ ‘.当我这样做时,它适用于数字(其中vect = vector< double>):

qi::parse(first,last,double_ >> *(',' >> double_  | ' ' >> double_ | ';' >> double_),

VECT,空间);

但是,当我使用vect = vector<修改字符串的语法时字符串>,

+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_,它被视为一系列字符而不是字符串.有什么方法可以解决这个问题吗?

谢谢

解决方法

使用更新版本的Spirit,字符串处理(您的方式)变得更加容易.我建议使用Spirit from Boost V1.47,它重新修改属性处理代码.

但即使它以你想要的方式编译,它也不会按照你期望的方式解析.精神本身就是贪婪的,这意味着char_将无条件地消耗你输入中留下的任何东西.这似乎更好

+~char_(",;") % char_(",;")

一个或多个()字符在集合中没有(〜),“;”正好穿插其中一个角色.列表解析器(%)公开向量< A>,其中a是左手表达式的属性,向量< String>在上面的情况.

大佬总结

以上是大佬教程为你收集整理的c – 基于提升精神语法的字符串拆分全部内容,希望文章能够帮你解决c – 基于提升精神语法的字符串拆分所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。