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