質問
Spiritは、文字列を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(), s.end(), result);
精神に基づいています auto
特徴。これらのいずれかを関数に包むと、必要なものが得られます。
編集:ブースト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)]);
他のヒント
int i = boost::lexical_cast<int>(str);
所属していません StackOverflow