(отказ от ответственности, я учусь подталкивание дух)Попытка разобрать целое число как строку (ци :: as_wstring)
Я пытаюсь разобрать выражение вроде этого: F (1)
и хотите получить 1 как строку («1» вместо числа (которое работает с qi :: int_)).
Я пытался что-то вроде этого (что это неправильно, но, возможно, я нахожусь в правильном направлении), но результирующая строка «\ x1» вместо того, чтобы просто «»
Любое понимание, как для чего нужно разбирать число в строку?
template <typename Iterator>
struct range_parser : boost::spirit::qi::grammar<Iterator, RangeResult(), iso8859_1::space_type>
{
range_parser() : range_parser::base_type(start)
{
using qi::lexeme;
using qi::int_;
using iso8859_1::digit;
number_as_string %= lexeme[ +(int_) ];
start %=
qi::lit("F")
>> '('
>> number_as_string
>> ")"
;
}
qi::rule<Iterator, std::wstring(), iso8859_1::space_type> number_as_string;
qi::rule<Iterator, RangeResult(), iso8859_1::space_type> start;
};
может кто-нибудь изменить название, чтобы удалить часть qi :: as_wstring? он не является релевантным (я думаю) – Max
Я думаю, вы хотели написать '+ (digit)' (одну или несколько цифр) вместо '+ (int_)' (один или несколько целых чисел). Обратите внимание, что он не будет делать то же самое, что и 'int_' (без проверки диапазона, no +/-). Если вы хотите захватить вход, распознанный int_, вы можете попробовать использовать необработанную директиву: 'raw [int_]' http://www.boost.org/doc/libs/1_63_0/libs/spirit/doc/html/spirit /qi/reference/directive/raw.html –
(вернулся к проекту) Привет @BorisGlick, можете ли вы поставить это как ответ, чтобы я мог принять это как ответ? Благодарю. – Max