我需要将一个wstring解析为int,float或一个字符串本身。我发现了一个类似于我Here的问题,但我不明白如何使用解析器。我找不到test_parser方法。问题是:在为解析器实现自定义规则后,如何使用它们?
答案 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_('"')
)另一个引用(>>
)。