(免責聲明,我的學習提升精神)試圖解析整數字符串(齊:: 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
我認爲你的意思是寫'+(數字)'(一個或多個數字)而不是'+(int_)'(一個或多個整數)。請注意,它不會做'int_'(沒有範圍檢查,沒有+/-符號)。如果你想捕獲由int_識別的輸入,你可以嘗試使用raw指令:'raw [int_]'http://www.boost.org/doc/libs/1_63_0/libs/spirit/doc/html/spirit /qi/reference/directive/raw.html –
(回到項目)嘿@BorisGlick,你可以把它作爲答案,所以我可以接受這個答案?謝謝。 – Max