(면책 조항, 내가 배우고 부스트 정신)이 문자열로 정수를 구문 분석하려고 (치 : as_wstring)
나는 이런 식 구문 분석을 시도하고있다 : F (1)
및 1을 문자열 ("qi :: int_와 작동하는 숫자"대신 "1")로 가져 오려고합니다.
나는 이런 식으로 뭔가 시도 (잘못이지만, 어쩌면 내가 올바른 방향입니다)하지만, 결과 문자열은 "1 개 \ "대신 그냥 "1"
어떤 통찰력있는 그대로 숫자를 문자열로 파싱하는 데 필요한 것은 무엇입니까?
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_) '(하나 이상의 정수) 대신에'+ (digit)'(하나 이상의 숫자)를 써야한다고 생각한다. 'int_' (범위 체크가 없으며, +/- 부호 없음)와 같은 일을하지 않습니다. int_가 인식하는 입력을 캡쳐하려면 원시 지시어 인'raw [int_]'를 사용해보십시오. http://www.boost.org/doc/libs/1_63_0/libs/spirit/doc/html/spirit /qi/reference/directive/raw.html –
(프로젝트에 다시 돌아 왔습니다.) 안녕하세요. @ 보리스 글릭, 답변으로 제출하여 답변으로 받아 들일 수 있습니까? 감사. – Max