2011-08-21 85 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_('"')),然後是(>>)另一個報價('"')。