#include "stdafx.h" #include "FileMgr.h" CFileMgr::CFileMgr() { } CFileMgr::~CFileMgr() { } void CFileMgr::ReadFileToStrVec(const std::string& filePath, std::vector>& data) { std::ifstream file(filePath, std::ios::in | std::ios::binary); if (!file.is_open()) { return; } // 获取文件的大小 file.seekg(0, std::ios::end); size_t fileSize = file.tellg(); file.seekg(0, std::ios::beg); // 将文件内容映射到内存 char* fileBuffer = new char[fileSize]; file.read(fileBuffer, fileSize); // 解析数据 char* lineStart = fileBuffer; char* lineEnd = nullptr; size_t rowIndex = 0; while ((lineEnd = std::find(lineStart, fileBuffer + fileSize, '\n')) != fileBuffer + fileSize) { std::vector row; char* valueStart = lineStart; char* valueEnd = nullptr; // 分割当前行 while ((valueEnd = std::find(valueStart, lineEnd, ',')) != lineEnd) { row.emplace_back(std::string(valueStart, valueEnd)); valueStart = valueEnd + 1; } // 添加最后一个字段 row.emplace_back(std::string(valueStart, lineEnd)); // 将行数据添加到结果中 data.push_back(row); // 移动到下一行 lineStart = lineEnd + 1; ++rowIndex; } // 清理 delete[] fileBuffer; file.close(); }