正则表达式令牌迭代器示例

一个 std::regex_token_iterator 提供了一个巨大的工具提取逗号分隔值文件的元素 。除了迭代的优点之外,这个迭代器还能够捕获其他方法困难的转义逗号:

const auto input = "please split,this,csv, ,line,\\,\n"s;
const regex re{ "((?:[^\\\\,]|\\\\.)+)(?:,|$)" };
const vector<string> m_vecFields{ sregex_token_iterator(cbegin(input), cend(input), re, 1), sregex_token_iterator() };

cout << input << endl;

copy(cbegin(m_vecFields), cend(m_vecFields), ostream_iterator<string>(cout, "\n"));

实例

值得注意的是,使用正则表达式迭代器,regex 参数必须是 L 值。 R 值不起作用