如何分割内容中含有分割符的CSV

今天在解析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;

 }

你可能感兴趣的:(如何分割内容中含有分割符的CSV)