⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chv.cpp

📁 linux 上http email 协议分析程序 主要能够处理大数据量的主干网的应用
💻 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 + -