3 * Psychlops Standard Library (MacOSX)
5 * Last Modified 2005/10/18 by Kenchi HOSOKAWA
6 * (C) 2005 Kenchi HOSOKAWA, Kazushi MARUYA, Takao SATO
10 #include "psychlops_d_misc.h"
17 std::map<const char*, double> Data::number;
20 Data::DUMMY_ *Data::_tmp;
21 Data_DUMMY2_ *Data::dummy2_;
22 void operator >>(std::istream &a, Data_DUMMY2_ &b){}
23 // const int Data::prohibitedcnt = 11;
24 char * Data::prohibited[prohibitedcnt] = {"\\","/",";",",",":","*","?","\"","<",">","|"};
25 char * Data::delimiter = "\t";
26 std::ofstream Data::output;
29 int Data::loadCSVraw(const std::string& filename, std::vector<std::vector<std::string> >& lines)
32 std::string filenamechacker = File::decodePath(filename);
33 std::ifstream fin(filenamechacker.c_str());
35 std::string tmp, source("");
36 while( std::getline(fin,tmp) ) {
42 return parseCSV(source, lines);
45 // code from http://stackoverflow.com/questions/1120140/csv-parser-in-c
46 int Data::parseCSV(const std::string& csvSource, std::vector<std::vector<std::string> >& lines)
51 bool lastCharWasAQuote = false;
55 std::vector<std::string> line;
57 std::string::const_iterator aChar = csvSource.begin();
58 while (aChar != csvSource.end())
64 if (lastCharWasAQuote == true)
66 lastCharWasAQuote = false;
83 line.push_back(field);
98 line.push_back(field);
99 lines.push_back(line);
109 field.push_back(*aChar);
119 line.push_back(field);
121 lines.push_back(line);
128 } /* <- namespace Psycholops */