加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 使用boost spirit将String转换为int

发布时间:2020-12-16 10:28:16 所属栏目:百科 来源:网络整理
导读:我听说精神在将字符串转换为int时非常快. 但是我无法创建一个可以这样做的简单函数.就像是 int string_to_int(string s){ ?????/ * * ????? / } 任何人都可以使用提升精神来填补这个功能. 顺便说一句,我正在使用boost 1.34而不是最新版本. 解决方法 有几种方
我听说精神在将字符串转换为int时非常快.

但是我无法创建一个可以这样做的简单函数.就像是

int string_to_int(string& s){
?????/ * * ????? /
}

任何人都可以使用提升精神来填补这个功能.

顺便说一句,我正在使用boost 1.34而不是最新版本.

解决方法

有几种方法可以实现这一目标:

#include <boost/spirit/include/qi_parse.hpp>
#include <boost/spirit/include/qi_numeric.hpp>

namespace qi = boost::spirit::qi;

std::string s("123");
int result = 0;
qi::parse(s.begin(),s.end(),qi::int_,result);

或更短:

#include <boost/spirit/include/qi_parse.hpp>
#include <boost/spirit/include/qi_numeric.hpp>
#include <boost/spirit/include/qi_auto.hpp>    
namespace qi = boost::spirit::qi;

std::string s("123");
int result = 0;
qi::parse(s.begin(),result);

这是基于Spirit的自动功能.如果将其中一个包装成一个函数,就可以得到你想要的东西.

编辑:我现在才看到你正在使用Boost 1.34.所以这里有相应的咒语:

#include <boost/spirit.hpp>

using namespace boost::spirit;

std::string s("123");
int result = 0;
std::string::iterator b = s.begin();
parse(b,int_p[assign_a(result)]);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读