3.6.1. pfi::text::csv

3.6.1.1. 概要

CSVパーザ。

3.6.1.2. 使い方

3.6.1.2.1. parser作成

  • char型を返すイテレータを渡す

vector<char> s;
csv_parser p(s.begin(), s.end());
  • istreamを渡す

ifstream ifs("hoge");
csv_parser p(ifs);
  • stringを渡す

csv_parser p("a,b,c\nd,e,f");

3.6.1.2.2. イテレーション

  • next()で回す

while(p.next())
  for (size_t i=0; i<p.get().size(); i++)
    cout<<p.get()[i]<<endl;

csv_parser::get() は vector<const char*> を返す。

  • イテレータで回す

for (csv_iterator it(p), jt; it!=jt; ++it)
  for (size_t i=0; i<it->size(); i++)
    cout<<(*it)[i]<<endl;

3.6.1.2.3. お手軽インターフェース

void parse_csv(const string &input, vector<vector<string> > &ret);

3.6.1.3. サンプルコード

#include <iostream>
#include <fstream>
#include <pficommon/text/csv.h>
using namespace std;

int main(int argc, char *argv[])
{
  ifstream ifs(argv[1]);

  if (!ifs) return 0;

  pfi::text::csv_parser psr(ifs);
  for (pfi::text::csv_iterator p(psr), q; p!=q; ++p){
    for (size_t i=0; i<p->size() ;i++)
      cout<<(*p)[i]<<'$'<<endl;
    cout<<"====="<<endl;
  }
}