ちょっと嵌ったのでメモ。
#include <iostream> #include <vector> #include <string> #include <boost/spirit/include/qi.hpp> #include <boost/range/algorithm/for_each.hpp> #include <boost/lambda/lambda.hpp> std::vector<std::string> parse_string_csv(const std::string& s) { namespace qi = boost::spirit::qi; std::vector<std::string> result; if (s.empty()) return result; std::string::const_iterator it = s.begin(); qi::phrase_parse(it, s.end(), *(qi::char_ - ',') % ',', qi::space, result); return result; } int main() { boost::for_each(parse_string_csv("abc, xyz"), std::cout << boost::lambda::_1 << '\n'); }
abc xyz