#include "CSVReader.h" // 构造函数 CSVReader::CSVReader(const string& filename) : filename(filename) { file.open(filename); if (!file.is_open()) { cerr << "Error: Could not open file " << filename << endl; exit(1); } } // 析构函数 CSVReader::~CSVReader() { if (file.is_open()) { file.close(); } } // 按行读取CSV文件 vector CSVReader::readByLine() { vector rows; string line; while (getline(file, line)) { CSVRow row; stringstream ss(line); string cell; while (getline(ss, cell, ',')) { row.data.push_back(cell); } rows.push_back(row); } return rows; } // 按块读取CSV文件 vector CSVReader::readByBlock(int blockSize) { vector rows; string line; int count = 0; while (getline(file, line) && count < blockSize) { CSVRow row; stringstream ss(line); string cell; while (getline(ss, cell, ',')) { row.data.push_back(cell); } rows.push_back(row); count++; } return rows; } // 按字节读取CSV文件 string CSVReader::readByByte(int byteSize) { vector buffer(byteSize); file.read(buffer.data(), byteSize); return string(buffer.data(), byteSize); }