使用boost spirit将字符串转换为int

时间:2010-10-15 08:29:08

标签: c++ boost-spirit

我听说精神在将字符串转换为int方面非常快。

但是我无法创建一个可以执行此操作的简单函数。像

这样的东西

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

任何人都可以使用提升精神来填写此功能。

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

2 个答案:

答案 0 :(得分:11)

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

#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(), s.end(), result);

基于Spirit的auto功能。如果你将其中一个包装成一个函数,你会得到你想要的东西。

编辑:我现在才看到你正在使用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, s.end(), int_p[assign_a(result)]);

答案 1 :(得分:2)

int i = boost::lexical_cast<int>(str);