正则表达式令牌迭代器示例
一个 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 值不起作用 。