加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
CSVFile.h 2.35 KB
一键复制 编辑 原始数据 按行查看 历史
/*
* File: CSVFile.h
* Author: Administrator
*
* Created on 2013年7月1日, 下午4:04
*/
#ifndef CSVFILE_H
#define CSVFILE_H
#include <string>
#include <vector>
#include <sstream>
class CSVFile {
public:
bool Load(const std::string& file_name);
bool Save(const std::string& file_name);
bool Save();
void GetRowCol(int& row, int& col) const {
row = row_;
col = col_;
}
template<typename T>
T Read(int row, int col) {
int row_index = row;
if (row_index < 0 || row_index >= static_cast<int> (table_.size())) {
return T();
}
Fields& fields = table_[row_index];
int col_index = col;
if (col_index < 0 || col_index >= static_cast<int> (fields.size())) {
return T();
}
Field& field = fields[col_index];
T data;
std::stringstream ss;
ss << field.value;
ss >> data;
return data;
}
template<typename T>
bool Write(int row, int col, T data, bool is_string = false) {
int row_index = row;
if (row_index < 0) {
table_.push_back(Fields());
row_index = static_cast<int> (table_.size() - 1);
} else {
while (static_cast<int> (table_.size())<(row_index + 1)) {
table_.push_back(Fields());
}
}
Fields& fields = table_[row_index];
int col_index = col;
if (col_index < 0) {
fields.push_back(Field());
col_index = static_cast<int> (fields.size() - 1);
} else {
while (static_cast<int> (fields.size())<(col_index + 1)) {
fields.push_back(Field());
}
}
Field& field = fields[col_index];
std::stringstream ss;
ss << data;
field.value = ss.str();
field.is_string = is_string;
return true;
}
private:
struct Field {
bool is_string;
std::string value;
};
typedef std::vector<Field> Fields;
typedef std::vector<Fields> Table;
void ReadLine(std::fstream& file, Fields& fields);
void WriteLine(std::fstream& file, const Fields& fields);
bool Parse(std::fstream& file);
bool ParseLine(const std::string& line, Fields& fields);
std::string file_name_;
Table table_;
Fields field_;
int row_, col_;
};
#endif /* CSVFILE_H */
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化