Разбор строки в int или плавающий с буст-духом - PullRequest
1 голос
/ 21 августа 2011

Мне нужно проанализировать wstring для int, float или для самой строки.Я нашел вопрос, похожий на мой Здесь , но я не понимаю, как использовать парсер.Я не нахожу метод test_parser.Вопрос в том, как их реализовать после реализации пользовательских правил для парсера?

1 Ответ

2 голосов
/ 26 августа 2011

Разбор wstring для int прост:

wstring str(L"1234");
int i = 0;
qi::parse(str.begin(), str.end(), qi::int_, i);
assert(i == 1234);

Аналогично, синтаксический анализ float выглядит так:

wstring str(L"1234.567");
double d = 0;
qi::parse(str.begin(), str.end(), qi::double_, d);
assert(d == 1234.567);

Я не уверен, что вы подразумеваете под анализомстрока'.Если вы имеете в виду синтаксический анализ строки в кавычках, вы можете написать ее следующим образом:

wstring str(L"\"abc\"");
wstring s;
qi::parse(str.begin(), str.end(), '"' >> *~qi::char_('"') >> '"', s);
assert(s == L"abc");

выражение '"' >> *~qi::char_('"') >> '"' означает: кавычка ('"'), за которой следует (>>) ноль или более (*) символы, которые не являются кавычками (~qi::char_('"')), за которыми следует (>>) другая кавычка ('"').

...