Posted on 2010-08-06 10:46
delvin 阅读(368)
评论(0) 编辑 收藏
今天在解析CSV中遇到一个问题,就是csv内容中含有分割符,这里假定分割符就是逗号,当然这些内容用双引号括起来了。
因以前的代码是使用C++ Tr1 的regex
vector<string> Parser::parse(string& line)
{
vector<string> fields;
std::tr1::regex re(",");
if( &line != NULL)
{
sregex_token_iterator i(line.begin(), line.end(), re, -1);
sregex_token_iterator j;
while (i != j)
{
fields.push_back(*i++);
}
}
return fields;
}
查了资料,修改成如下代码就可以
vector<string> Parser::parse(string& line)
{
vector<string> fields;
std::tr1::regex re("(?!\".*),(?!.*\")");
if( &line != NULL)
{
sregex_token_iterator i(line.begin(), line.end(), re, -1);
sregex_token_iterator j;
while (i != j)
{
fields.push_back(*i++);
}
}
return fields;
}