質問

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);

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top