📄 chv.cpp
字号:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <assert.h>
#include <Utility.h>
#include "Chv.h"
void Chv::init(char *pheads)
{
char szbuf[1024];
char *p=pheads;
assert(pheads!=NULL);
m_itotfield=0;
while(p!=NULL)
{
p=strchr(p+1,',');
m_itotfield++;
}
m_pfield=new _Tfield[m_itotfield];
strcpy(szbuf,pheads);
p=strtok(szbuf,",");
int i=0;
while(p!=NULL)
{
strcpy((m_pfield+i)->fieldname,p);
i++;
p=strtok(NULL,",");
}
}
int Chv::gettotavail()
{
return m_itotavail;
}
void Chv::clear()
{
m_itotavail=0;
for(int i=0;i<m_itotfield;i++)
{
*(m_pfield+i)->fieldvalue=0;
(m_pfield+i)->bvail=false;
}
}
void Chv::clear(char *keyname)
{
for(int i=0;i<m_itotfield;i++)
{
if(strcasecmp(keyname,(m_pfield+i)->fieldname)==0)
{
if((m_pfield+i)->bvail)
{
*(m_pfield+i)->fieldvalue=0;
(m_pfield+i)->bvail=false;
m_itotavail--;
}
return;
}
}
}
int Chv::searchField(char *cfieldname)
{
for(int i=0;i<m_itotfield;i++)
{
if(strcasecmp((m_pfield+i)->fieldname,cfieldname)==0)
return i;
}
return -1;
}
void Chv::setValues(Cmimestream *pstream)
{
int len;
char szbuf[2048+1];
char szname[128];
char *p;
int id;
while(1)
{
len=pstream->getLine(szbuf,2048);
if(len<=0)
return ;
/*#ifdef DEBUG
printf("[%s]\n",szbuf);
#endif*/
p=strchr(szbuf,':');
if(p!=NULL)
{
int ihdlen=p-szbuf;
if(ihdlen<sizeof(szname))
{
memcpy(szname,szbuf,ihdlen);
szname[ihdlen]=0;
TU::delSpace(szname);
id=searchField(szname);
if(id>=0)
{
strcpy((m_pfield+id)->fieldvalue,p+1);
TU::delSpace((m_pfield+id)->fieldvalue);
/*#ifdef DEBUG
printf("name=[%s] ",szname);
printf("val=[%s]\n",(m_pfield+id)->fieldvalue);
#endif*/
(m_pfield+id)->bvail=true;
m_itotavail++;
}
}
}
}
}
char *Chv::getValue(char *phead)
{
for(int i=0;i<m_itotfield;i++)
{
if(strcasecmp((m_pfield+i)->fieldname,phead)==0)
{
if((m_pfield+i)->bvail)
return (m_pfield+i)->fieldvalue;
return NULL;
}
}
return NULL;
}
bool Chv::getValue(char *phead,char *pval)
{
for(int i=0;i<m_itotfield;i++)
{
if(strcasecmp((m_pfield+i)->fieldname,phead)==0)
{
if((m_pfield+i)->bvail)
{
strcpy(pval,(m_pfield+i)->fieldvalue);
return true;
}
else return false;
}
}
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -