CubeWorldMods/LocalizationMod/CCSVParse.h

75 lines
2.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// CCSVParse.hpp
// CPPAlgorithm
//
// Created by xujw on 16/2/26.
// Copyright © 2016年 xujw. All rights reserved.
//
#ifndef CCSVParse_h
#define CCSVParse_h
#include <stdio.h>
#include <vector>
#include <string>
#include <map>
#include <iostream>
#include <sstream>
/*
* 全局函数,转换数据类型
* toInt
* toFloat
* toDouble
*/
int conToInt(std::string &source);
float conToFloat(std::string &source);
double conToDouble(std::string &source);
//转成std::string
std::string conToString(int s);
std::string conToString(float s);
std::string conToString(double s);
class CCSVParse
{
public:
CCSVParse();
~CCSVParse();
/*
* 解析成map形式数据要保证第一行为数据类型名第一列为id名,id不可重复)
* 使用时通过id获取一行数据也是map形式然后通过类型名作为key获取数据
* 格式如下:
* id name age
* 1 小明 20
* 2 小红 19
* 3 小光 18
*/
std::map<std::string, std::map<std::string, std::string> > parseCsvFileToMap(const std::string &fileName,const std::string &separator = ",");
//解析出行列数据 separtor只能是一个字符(比如 , # 等)
std::vector< std::vector<std::string> > parseCsvFile(const std::string &fileName,const std::string &separator = ",");
//打印出解析的数据 测试用
void printParseData() const;
inline size_t getRowNum() const {return _gridData.size();};
inline void useSimpleModel(bool flag){_useSimpleModel = flag;};
/*
分隔字符串
str:要分隔的字符串/文件
seperator:分隔符
*/
std::vector<std::string> splitString(const std::string &str,const std::string &sparator);
std::string loadCsvFile(const std::string &fileName);
private:
//原始数据
std::vector< std::vector<std::string> > _gridData;
bool _useSimpleModel; //是否使用简单模式
};
#endif /* CCSVParse_h */