posts - 7, comments - 3, trackbacks - 0, articles - 26

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

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;

 }


只有注册用户登录后才能发表评论。


网站导航: