qi::spaceは、スペース、タブ、および改行コードにマッチするパーサーです。
#include <iostream> #include <string> #include <boost/optional.hpp> #include <boost/spirit/include/qi.hpp> namespace qi = boost::spirit::qi; template <class R, class Expr> boost::optional<R> parse(const std::string& input, const Expr& expr) { R result; typename std::string::const_iterator it = input.begin(); if (!qi::parse(it, input.end(), expr, result)) { return boost::none; } return result; } int main() { assert(parse<char>(" ", qi::space) == ' '); assert(parse<char>("\t", qi::space) == '\t'); assert(parse<char>("\r", qi::space) == '\r'); assert(parse<char>("\n", qi::space) == '\n'); assert(parse<char>("x", qi::space) == boost::none); assert(parse<char>("1", qi::space) == boost::none); }