#ifndef __CSV_TABLE_HPP__ #define __CSV_TABLE_HPP__ #include #include #include namespace jdi { /** * @brief CSV 文件的解析结果,保存列名与数值矩阵。 */ struct CsvTable { std::vector headers; /**< 列名(已去除引号与首尾空白)。 */ std::vector> rows; /**< 数值矩阵,行优先,每行长度与 headers 一致。 */ wchar_t delimiter = L','; /**< 实际使用的分隔符。 */ std::size_t sourceRowCount = 0; /**< 文件中有效数据行数(不含空行与注释行)。 */ std::size_t skippedRowCount = 0; /**< 因格式异常被置为缺失值的行数。 */ /** * @brief 判断解析结果是否包含可用的表格数据。 * @return 存在列名且存在数据行时返回 true。 */ bool HasData() const { return !headers.empty() && !rows.empty(); } }; /** * @brief 读取并解析一个 CSV 文件。 * @param [IN] filePath CSV 文件完整路径(宽字符,支持中文路径)。 * @param [OUT] table 解析结果输出。 * @param [OUT] error 失败原因描述(成功时清空)。 * @return 解析成功返回 true,否则返回 false。 */ bool LoadCsvTable(const std::wstring& filePath, CsvTable& table, std::wstring& error); } // namespace jdi #endif // __CSV_TABLE_HPP__