基础数据结构类 CSelectHelp
使用说明
说明
///返回大小
int size();
///从CVector加载
int fromVector(CVector& v,string sField="id");
///生成调试数据,仅仅用于调试
void genDebugData();
///从其它Help复制数据
void copy(CSelectHelp& s);
///取得指定字段的子help
void copySub(CSelectHelp& s, CVector& v);
///从其它Help复制数据某一行
void copyLine(CSelectHelp& s, int idx);
///从其它Help复制数据结构,Help将会被reset
void copyStruct(CSelectHelp& s);
///用于列值的计算
double sumCol(string sFileld);
///计算某一行的值
double sumRow(int iRow,CVector& v);
///查找最小的数
int findMin(string sFiled, string k = "", string v = "", string sType = "string");
///最找最大值
int findMax(string sFiled,string k="",string v="", string sType = "string");
///排序,skeys 像 param_type_id,parameter_code ,中间以,间隔
bool orderBy(string skeys,bool bAsc=true);
///交换行位置
void swap(int iRow,int iRowTo);
///合计
bool sum(string skeys);
///进行CSelectHelp的差异化分析 idxPK代表help中唯一键
bool diff(int idxPK,CSelectHelp& helpDiff, CSelectHelp& helpUpdate, CSelectHelp& helpDelete, CSelectHelp& helpAdd);
///进行CSelectHelp的差异化分析 idxPK代表help中唯一键
bool diffFilter(int idxPK, CSelectHelp& helpDiff, CSelectHelp& helpUpdate, CSelectHelp& helpDelete, CSelectHelp& helpAdd,CVector& v);
///是否为相同的help idxPK代表help中唯一键,在vector中的列才是匹配查询的对像
bool diffOnly(int idxPK, CSelectHelp& helpDiff, CSelectHelp& helpUpdate, CSelectHelp& helpDelete, CSelectHelp& helpAdd, CVector& v);
///是否是相同的help
bool equal(CSelectHelp& help);
///将help的值替换,例如0代替为 否等
void replaceValue(string sField, string sOld, string sNewValue);
///取从pos开始,总共rows行结果至 helpOut
void getRows(CSelectHelp& out, int pos, int length);
///将列拆分成纵向的列
void getCols(CSelectHelp& out, int iOnCols);
///转化为一行,并去掉一些不要的列
string row2StringFilter(int iPos, string sPlit,CVector& v);
///将某一行的数据转化成字符串,使用sPlitf进行分隔
string row2String(int iRow, string sPlit);
///在原有help中增加一列,不改变原有数据
void addFieldWithData(string sField, string v);
//将指定行转化为Intent
bool getIntent(int iRow,CIntent& it);
///列转化为符串 不常用
string col2String(string sColName,string sPlit,bool bUnique=false);
///列转化为类似于 '12','34','aaa' 这种字符串
string col2StringPoint(string sColName, string sPlit,string sAddPoint="'", bool bUnique = false);
///合并将help合同进来
void unionHelp(CSelectHelp& help);
///将字段格式化浮点数的位数
void formatFloat(string sField, int iPre);
///从字符串生成
int fromString(const char* s,const char* sSep, const char* sLineSep, bool bHaveHeader = true);
///从字符串生成
int fromString(const char* src);
///从字符串生成
int fromStringNoField(const char* src, const char* sSep, const char* sLineSep);
///是否存在字段
bool existField(const char* src);
///填充值
void fill(string sFiled, string sV);
///连接字符串
void join(string sFormat, CVector& v, string sDestField);
///删除指定行
bool deleteRow(int iPos);
///根据CKeyVMap删除指定行
bool deleteRowByMap(CKeyVMap& v);
///删除列
bool deleteCols(CVector& v);
///转化成字符串
std::string toString();
///通过key,value数组查找指定值的位置,仅返回第一个找到的行
int searchIndexByMap(CKeyVMap& v);
///通过key,value查找另外的key,value
std::string search(string key, string value, string destKey);
///查找指定key的值的行号
int searchIndex(string key, string value);
///获取指定行的指定列的数据,以字符串方式返回 trim代表是否去掉空格
std::string valueString(int row, std::string key, bool trim = false);
///获取指定行的指定列的数据,以字符串方式返回 trim代表是否去掉空格
std::string valueStringByCol(int row, int col, bool trim = false);
///获取指定行的指定列的数据,以整数方式返回 def为没有找到则使用-999代替
int valueInt(int row, int col, int def = -999);
///获取指定行的指定列的数据,以浮点数方式返回
double valuedouble(int row, int col, double def = -999.0);
///获取指定行的指定列的数据,以浮点数方式返回
double valuedouble(int row, string key, double def = -999.0);
///重新初始化,清空所有数据
void reset();
///清空值,但是不清空结构
void resetValue();
///修改字段的别名
bool setFieldInfo(string field, string name, string alias = "");
///显示当前表查询表结构的信息
void dumpSelectStruct();
///在指定行前插入多行
bool addRowByHelp(int iPos, CSelectHelp &help);
///在指定行前插入多行
bool addRow(int iPos, CVector& line, int iNum );
///增加key,value会自动增加列,仅对有一行的数据有效
void addkv(string k, string v);
///采用二分查找,返回找到的第一个位置
int lookup(const char* field, const char* value);
///将数据按指定字段排序,快速度查找,需要先使用CSortHelp进行排序 采用sortV2已排序方式,采用二分查找,可以大大提高效率,可返回多条记录
int lookup(const char* field, const char* value, CSelectHelp& help);
///查询指定的help,前且查找value开始的字符串,将结果以help返回
int lookupLike(string field, string value, CSelectHelp& help,int iMaxCount=30);
///条件 it中可以存放多个查询的key,value
int like(CIntent& it, CSelectHelp& help,int iMaxCount=1000);
///显示当前列表中的数据
void dump(const char* sep = "\t");
///显示当前列表中的数据,并打印标题
void dumpEx(const char* title = "");
///获取行保存到line,脚本中使用下面的
bool getLine(int iRowIndex,table_line& line);
///获取行转入Vector
bool getLineVect(int iRowIndex, CVector& v);
///增加table_line
bool addValue(table_line& value);
///增加Vector
bool addVectorValue(CVector& value);
///根据Vector更新行
bool updateRowByVect(CKeyVMap&v, CVector& value);
///获取不唯一行,以Vector返回,代表的行号列表
int getNotUnique(CVector& v,CVector& vLines);
///增加字段名
void addField(string value, string alias = "");
///在指定索引位置后面增加字段 iPos从0开始计数
bool addFieldByPos(string sField, int iPos, string alias = "");
///修改列名
bool setFieldByCol(int col, string newName);
///获取字段的别名
std::string getAlias(string field);
///用于更新help内容 row行号,col字段列序号
bool setValueStringByCol(int row, int col,string value);
///用于更新help内容 指定行row和指定字段key的值
bool setValueString(int row, std::string key, std::string value);
///设置分隔符
void setSplit(char sep, char lineSep);
///将CSelectHelp进行排序 排序可以按string,float,int三种方式进行排序 ,本函数已禁用,仅兼容存在
bool sort(const char* field, const char* type = "string", bool bAsc = true);
///请使用这个函数,功能同上
bool sortV2(const char* field,const char* type = "string",bool bAsc = true,bool bUnique=true);
///保存到文件
bool toFile(string file);
///从文件加载
bool fromFile(string file);
///valueStringByCol的别名
std::string vsi(int row, int col);
///valueString的别名
std::string vs(int row,string field);
///获取指定行列的整数值
long vii(int row, int col);
///获取指定列和字段的整数值
long vi(int row,string field);
///获取指定行列的浮点数值
double vfi(int row, int col);
///获取指定行和字段的浮点数值
double vf(int row, string field);
///获取列数
int cols();
///获取行数
int rows();
///获取字段名
std::string getColName(int col);
///获取字段的索引号
int getIndexByName(std::string key);
///格式化时间格式 支持的格式:1.yyyy-mm-dd hh:mm:ss 2.yy-mm 3.yy-mm-dd 4.yyyy-mm-dd 5.yyyy-mm-dd hh 6.yyyy-mm-dd hh:mm 7.yyyy-mm-dd hh:mm:ss 8.yymm
///9.yymmdd 10.yyyymm 11.yyyymmdd 12.yyyy 13.hh:mm:ss 14.mm-dd hh:mm:ss 15.mm-dd hh:mm 16.dd hh:mm 17.hh:mm
void formatTime(string sField, string sFormat);
///格式化值对应 将CIntent中的对应的sField的值进行代替
void formatValues(string sField, CIntent& it);