使用提升精神将字符串解析为int或float

时间:2011-08-21 10:18:17

标签: parsing floating-point int boost-spirit-qi

我需要将一个wstring解析为int,float或一个字符串本身。我发现了一个类似于我Here的问题,但我不明白如何使用解析器。我找不到test_parser方法。问题是:在为解析器实现自定义规则后,如何使用它们?

1 个答案:

答案 0 :(得分:2)

将一个wstring解析为int是直截了当的:

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

类似地,解析一个浮点似乎:

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_('"') >> '"'表示:引号('"')后跟(>>)零个或多个(*)个字符,这些字符不是引号({{1} }})后跟(~qi::char_('"'))另一个引用(>>)。