#ifndef __CSVWriter_H__ #define __CSVWriter_H__ #include struct CSVWriter { std::string m_fileName; std::ofstream m_ofstream; std::vector m_columnNames; CSVWriter(const char* file, std::ios_base::openmode mode = (std::ios_base::openmode)0, const std::vector& colNames = {}) : m_fileName(file), m_ofstream(file, mode|std::ios_base::out), m_columnNames(colNames) { for (auto col: colNames) m_ofstream << col << ","; if (colNames.size() ) m_ofstream << std::endl; } ~CSVWriter() { m_ofstream.close(); } template void writeLine(Ts const&... ts) { // https://riptutorial.com/cplusplus/example/3208/iterating-over-a-parameter-pack ((m_ofstream << ts << ","), ...); m_ofstream << std::endl; } void close() { m_ofstream.close(); } }; #endif