1

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

4

1 回答 1

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_('"') >> '"'意思是:一个引号 ( '"') 后跟 ( >>) 零个或多个 ( *) 不是引号 ( ) 的字符,~qi::char_('"')然后是 ( >>) 另一个引号 ( '"') 。

于 2011-08-26T12:39:20.700 回答