Il existe plusieurs façons d'y parvenir:
#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);
ou une plus courte:
#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);
qui est basé sur auto
caractéristiques de l'Esprit. Si vous en enveloppez un dans une fonction, vous obtenez ce que vous voulez.
EDIT: J'ai vu seulement maintenant que vous utilisez Boost 1.34. Donc, voici l'incantation correspondante pour cela:
#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)]);
Ce n'est pas "vraiment" rapide, il fonctionne juste à un taux normal. Jamais entendu parler de la parole, dans le pays des aveugles, l'homme un œil est roi? –