1

wstringを解析して、int、float、または文字列自体にする必要があります。ここで私のような質問を見つけましたが、パーサーの使用方法がわかりません。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_('"') >> '"'とは、引用符('"')の後に()が続く>>0個以上の(*)文字であり、引用符(~qi::char_('"'))の後に(>>)別の引用符()が続くことを意味します'"'

于 2011-08-26T12:39:20.700 に答える