私の状況:私はSpiritを初めて使用します。VC6を使用する必要があるため、Spirit1.6.4を使用しています。
私はこのような行を持っています:
//The Description;DESCRIPTION;;
DESCRIPTION
行が。で始まる場合は、テキストを文字列に入れたいです//The Description;
。
私にはうまくいくものがありますが、私にはそれほどエレガントに見えません:
vector<char> vDescription; // std::string doesn't work due to missing ::clear() in VC6's STL implementation
if(parse(chars,
// Begin grammar
(
as_lower_d["//the description;"]
>> (+~ch_p(';'))[assign(vDescription)]
),
// End grammar
space_p).hit)
{
const string desc(vDescription.begin(), vDescription.end());
}
印刷可能なすべての文字を次の文字に割り当てたいのです';'
が、次の理由で機能しません。parse(...).hit == false
parse(chars,
// Begin grammar
(
as_lower_d["//the description;"]
>> (+print_p)[assign(vDescription)]
>> ';'
),
// End grammar
space_p).hit)
どうすればヒットさせることができますか?