(Disclaimer, ich lerne Boost-Geist)Der Versuch, ganze Zahl als Zeichenfolge zu analysieren (qi :: as_wstring)
Ich versuche, einen Ausdruck wie folgt zu analysieren: F (1)
und möchte die 1 als String erhalten ("1" anstelle einer Zahl (was mit qi :: int_ funktioniert)).
Ich habe versucht, so etwas wie dies (was falsch ist, aber vielleicht bin ich in der richtigen Richtung), aber die resultierende Zeichenfolge „\ x1“ statt nur „“
Einsicht als zu was wird benötigt, um eine Zahl in eine Zeichenfolge zu analysieren?
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;
};
kann jemand den Titel bearbeiten, um den Qi :: as_wstring Teil zu entfernen? Es ist nicht relevant (ich denke) – Max
Ich denke, Sie wollten '+ (Ziffer)' (eine oder mehrere Ziffern) anstelle von '+ (int_)' (eine oder mehrere ganze Zahlen) schreiben. Beachten Sie, dass es nicht das Gleiche wie "int_" tut (keine Bereichsüberprüfung, kein Vorzeichen). Wenn Sie die von int_ erkannte Eingabe erfassen möchten, können Sie versuchen, die row-Anweisung zu verwenden: 'raw [int_]' http://www.boost.org/doc/libs/1_63_0/libs/spirit/doc/html/spirit /qi/reference/directive/raw.html –
(kam zurück auf das Projekt) Hey @BorisGlick, kannst du das als Antwort verwenden, damit ich das als Antwort akzeptieren kann? Vielen Dank. – Max