1
どのようにしてstd :: stringをboost spiritとphoenixで解析するのですか?精神とフェニックスをstd :: stringに構文解析する
たとえば、私は1234をint型に解析しましたが、文字列を解析しようとすると解析が失敗します。 qi::alnum
を+qi::alnum
に置き換えた場合、解析は成功しますが、文字列番号は望ましくない値 "4"を持ちます。 qi :: alnumは1文字にしかマッチしないようです。複数文字の英数字の文字列を解析するにはどうすればよいですか?
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <iostream>
#include <string>
int main() {
namespace qi = boost::spirit::qi;
namespace phoenix = boost::phoenix;
std::string s("--1234--");
{
int number = 0;
bool success = qi::parse(s.begin(), s.end(),
qi::lit("--") >> qi::int_[ phoenix::ref(number) = qi::_1 ] >> qi::lit("--")
);
std::cout << success << " qi::int_ parses: " << number << std::endl;
}
{
std::string number;
bool success = qi::parse(s.begin(), s.end(),
qi::lit("--") >> qi::alnum[ phoenix::ref(number) = qi::_1 ] >> qi::lit("--")
);
std::cout << success << " qi::alpha parses: " << number << std::endl;
}
return 0;
}
[bool success = qi :: parse(iter、end、 " - " >> + qi :: alnum >> " - number);'](http: //melpon.org/wandbox/permlink/gv8seAyNavZoBxua)。 – llonesmiz