Question

J'entends cet esprit est vraiment rapide à la conversion en chaîne int.

Je suis cependant incapable de créer une fonction simple qui peut le faire. Quelque chose comme

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

Peut esprit stimuler l'utilisation de personne pour remplir cette fonction.

Par la façon dont je travaille sur coup de pouce 1,34 et pas la dernière version.

Était-ce utile?

La solution

Il y a 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 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 les caractéristiques de auto de l'Esprit. Si vous enveloppez un de ceux-ci en fonction, vous obtenez ce que vous voulez.

EDIT: J'ai vu seulement maintenant que vous utilisez Boost 1,34. Voici donc le correspondant incantatoire 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)]);

Autres conseils

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top