// CSVReader.h #pragma once #include <fstream> #include <vector> #include <string> #include <memory> namespace math1d_cl { /** * @brief CSVReader reads CSV files. * @details Reads CSV files. Parses first line as header. Returns empty lines as empty row. * * @param decimal decimal point char * @param separator column separator char * */ class CSVReader { public: CSVReader(char decimal, char separator); void open(std::string file); void close(); std::shared_ptr<std::vector<std::string>> getRow(); std::shared_ptr<std::vector<std::string>> getHeader(); bool eof(); private: void explode(std::string input, std::shared_ptr<std::vector<std::string>> output, const char delimiter); std::ifstream m_fileStream; // Input file stream std::shared_ptr<std::vector<std::string>> m_header; // CSV Header const char m_decimal; const char m_separator; }; }