1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #include "CSVReader.h"
- #include <sstream>
- #include <algorithm>
- // Erstellt den Leser
- // path: Der Pfad der CSV Datei
- CSVReader::CSVReader( std::string path )
- : stream( path )
- {
- stream.seekg( 0, std::ios_base::end );
- byteCount = stream.tellg();
- stream.seekg( 0, std::ios_base::beg );
- }
- // Gibt die nächste Zeile der CSV Datei zurück
- std::vector< std::string > CSVReader::getNextRow()
- {
- std::string line;
- int tmp = stream.tellg();
- std::getline( stream, line );
- line.erase(std::remove(line.begin(), line.end(), '\n'), line.end());
- byteCount -= (int)stream.tellg() - tmp;
- std::stringstream lineStream( line );
- std::vector< std::string > result;
- std::string cell;
- while(std::getline(lineStream,cell, ';'))
- result.push_back(cell);
- return result;
- }
- // Gibt true zurück, falls es noch eine Zeile gibt
- bool CSVReader::hasNext() const
- {
- return stream && !stream.eof() && byteCount > 0;
- }
- // Gibt den Fortschritt des lesens in Prozent zurück
- int CSVReader::getProgress()
- {
- return (int)(((int)stream.tellg() / ((int)stream.tellg() + (double)byteCount)) * 100);
- }
|