2
在升壓::精神,我試圖用+(...)
語法來匹配一個或多個字符串,喜歡這裏:在boost :: spirit中使用+運算符:char轉換錯誤?
#include <boost/config/warning_disable.hpp>
#include <boost/spirit/include/qi.hpp>
#include <iostream>
#include <string>
namespace client
{
namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;
template <typename Iterator>
bool parse(Iterator first, Iterator last)
{
using qi::char_;
qi::rule< Iterator, std::string(), ascii::space_type > text;
qi::rule< Iterator, std::string() > myword;
text = '"' >> +(myword) >> '"'; // ERROR!
myword = +char_;
bool r = qi::phrase_parse(first, last, text, ascii::space);
if (first != last)
return false;
return r;
}
}
但我發現了以下錯誤:
foo.cpp:20: instantiated from 'bool client::parse
boost/spirit/home/qi/detail/assign_to.hpp:109: error: \
invalid static_cast from type \
'const std::basic_string<char, std::char_traits<char>, std::allocator<char> >' \
to type 'char'
不有人知道我做錯了什麼?
嘗試使用'lit'或'char_'來包裝這些文字? –
呃,國際海事組織這是運營商超載這樣一個醜陋的使用。 – orlp
@nightcracker Boost.Spirit可能是最好的解析器生成器。當然是那些在語言中的人。 –