Соответствие строк с использованием Boost Spirit - PullRequest
2 голосов
/ 01 июля 2011

Я изучаю Boost Spirit и просто изменил приведенный в документации пример, чтобы он соответствовал строкам вместо двойных.Но код не компилируется, и я получаю ошибки, которые не могу отладить.Ниже приведен код и напечатанные ошибки.Не могли бы вы помочь мне отладить эту проблему?

PS: Я предполагаю, что проблема заключается в использовании phoenix :: ref для векторной строки, но не совсем уверен, как и почему.Это ошибка, которую я получаю:

/usr/local/include/boost_1_46_1/boost/spirit/home/phoenix/stl/container/container.hpp:492:
error: invalid conversion from ‘const char’ to ‘const char*’

/usr/local/include/boost_1_46_1/boost/spirit/home/phoenix/stl/container/container.hpp:492: 
error:   initializing argument 1 of ‘std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]’

1 Ответ

2 голосов
/ 01 июля 2011

Если вы напишите это как

bool r = phrase_parse(
    first, last, +(char_[push_back(ref(v), _1)]), char_('/')  
);

это будет работать. Но написание

bool r = phrase_parse(
    first, last, +char_, '/', v
);

еще проще (и работает быстрее).

...