Разбор 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_('"')
), за которыми следует (>>
) другая кавычка ('"'
).