vector<char>はparse関数に渡せるのか気になったのでやってみました。
#include <iostream> #include <string> #include <vector> #include <boost/spirit/include/qi.hpp> #include <boost/fusion/include/vector.hpp> #include <boost/fusion/include/io.hpp> namespace fusion = boost::fusion; namespace qi = boost::spirit::qi; int main() { const std::string s = "123,abc,Hello"; const std::vector<char> input(s.begin(), s.end()); fusion::vector<int, std::string, std::string> result; std::vector<char>::const_iterator it = input.begin(); if (!qi::parse(it, input.end(), qi::int_ >> ',' >> *(qi::char_ - ',') >> ',' >> *(qi::char_ - qi::eoi), result)) { std::cout << "parse error" << std::endl; } std::cout << result << std::endl; }
(123 abc Hello)
できました。