2011-08-21 82 views
1

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

回答

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"); 

的expession '"' >> *~qi::char_('"') >> '"'意味着:如果你的意思是它作为解析引用字符串,你可以写它,然后(>>)零个或多个(*)字符报价('"'),这是不是一个引号( (~qi::char_('"')),然后是(>>)另一个报价('"')。