亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mystring.cpp

?? 字符串操作程序,包含字符串合并,刪除等操作
?? CPP
字號(hào):
// MyString.cpp: implementation of the CMyString class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MyString.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CMyString::CMyString()
{

}

CMyString::~CMyString()
{

}
/*****************************************************************************
功能:
	查找字符串是否含有指定的字符串
參數(shù):
	string:		待查找的字符串
	strCharSet:	包含的字符串
	len:		待查找的字符串長(zhǎng)度
返回:
	被包含的字符串的起始位置
	-1	輸入的字符串中不包含指定字符串
*****************************************************************************/
int CMyString::LocateStr(char *Inbuff,char *strCharSet,int len)
{
	int i=0;
	int j=0;
	int ret=-1;
	for(;;)
	{
		for(i=0;i<len;i++)
		{
			if(Inbuff[j+i]==NULL || strCharSet[i]==NULL)
				break;
			if(Inbuff[j+i]!=strCharSet[i])
				break;
		}
		if(i==len)
		{
			ret=j;
			break;
		}
		if(Inbuff[j]==NULL)
			break;
		j++;
	}
	return ret;
}
/*****************************************************************************
功能:
	查找字符串是否含有指定的字符串
參數(shù):
	string		待查找的字符串
	strCharSet	包含的字符串
	strlen		待查找的字符串長(zhǎng)度
	setlen		包含的字符串的長(zhǎng)度		
返回:
	被包含的字符串的起始位置,以0為基數(shù)
	-1	輸入的字符串中不包含指定字符串
*****************************************************************************/
int CMyString::LocateStrEx(unsigned char *string,unsigned char *strCharSet,int strlen,int setlen)
{

	int i=0,j=0,ret=-1;

	for(j=0;j<strlen;j++)
	{
		for(i=0;i<setlen;i++)
		{
			if(string[j+i]!=strCharSet[i])
				break;
		}
		if(i==setlen)
		{
			ret=j;
			break;
		}
	}
	return ret;
}
/*****************************************************************************
功能
	格式化字符串中的各行,將行尾符都修改為CR(0x0D)/LF(0x0A)
參數(shù)
	Inbuff	輸入字符串
	Outbuff	輸出字符串
	ch		續(xù)行符,需要將該字符刪除,并將后面的數(shù)據(jù)與前面的續(xù)成一行
			如果有兩個(gè)連續(xù)該字符,則認(rèn)為字符為當(dāng)前字符
*****************************************************************************/
void CMyString::FormatStrLines(char *Inbuff,char *Outbuff,char ch)
{
	if(Inbuff == NULL || strlen(Inbuff) == NULL)
		return;
	int i=0,j=0,len;
	len=strlen(Inbuff);
	char *tmp,*tmp2;
	tmp=(char *)malloc((len+1)*sizeof(char));
	memset(tmp,0,(len+1)*sizeof(char));
	tmp2=(char *)malloc((len+1)*sizeof(char));
	memset(tmp2,0,(len+1)*sizeof(char));
	tmp=Inbuff;
	//處理續(xù)行符, 該部分處理以后再加
	for(;;)
	{
		if(tmp[i] == 0x00)
			break;
		if(tmp[i] == ch)
		{
			if(tmp[i+1] == ch)
			{
				memcpy(&tmp[i],&tmp[i+1],len-i-1);
				len--;
				memset(&tmp[len-1],0,sizeof(char));
			}
			else
			{
				i++;
//				DelchInStr(&tmp[i+1],tmp2,0x20,1);
//				memset(&tmp[i],0,strlen(Inbuff)-i);
//				DelchInStr(tmp2,&tmp[i],0x09,1);
//				len=strlen(tmp);
				if(tmp[i] == 0x0D)
				{
					if(tmp[i+1] == 0x0A)
					{
						memcpy(&tmp[i],&tmp[i+2],len-i-2);
						len=len-2;
					}
					else
					{
						memcpy(&tmp[i],&tmp[i+1],len-i-1);
						len=len-1;
					}
				}
			}
		}
		i++;
	}

	i=0;
	for(;;)
	{
		if(tmp[i] == NULL)
			break;
		else if(tmp[i] == 0x0D && tmp[i+1] != 0x0A)
		{
			Outbuff[j++]=0x0D;
			Outbuff[j++]=0x0A;
			i++;
		}
		else if(tmp[i] == 0x0A && tmp[i-1] != 0x0D)
		{
			Outbuff[j++]=0x0D;
			Outbuff[j++]=0x0A;
			i++;
		}
		else
		{
			Outbuff[j++]=tmp[i++];
		}
	}

}
/*****************************************************************************
功能
	刪除字符串中的某個(gè)字符
參數(shù)
	Inbuff	待處理的字符串
	Outbuff	處理之后的字符串
	ch		需要?jiǎng)h除的字符
	flag	1=在字符串前面刪除,遇到非刪除字符紀(jì)終止
			2=在字符串后面刪除,遇到非刪除字符紀(jì)終止
			3=在字符串所有位置上都刪除
*****************************************************************************/
void CMyString::DelchInStr(char *Inbuff,char *Outbuff,char ch,int flag)
{
	if(Inbuff == NULL || strlen(Inbuff) == NULL)
		return;
	int i=0,j=0;
	switch(flag)
	{
	case 1:
		for(;;)
		{
			if(Inbuff[i] != ch)
				break;
			i++;
		}
		sprintf(Outbuff,"%s",&Inbuff[i]);
		break;
	case 2:
		for(;;)
		{
			if(Inbuff[strlen(Inbuff)-i-1] != ch)
				break;
		}
		memcpy(Outbuff,Inbuff,strlen(Inbuff)-i);
		break;
	case 3:
		for(;;)
		{
			if(Inbuff[i] == 0x00)
				break;
			if(Inbuff[i] != ch)
				Outbuff[j++]=Inbuff[i++];
			else
				i++;
		}
		break;
	default:
		break;
	}
}

/*****************************************************************************
功能
	獲取字符串中某個(gè)位置到指定字符之間的所有字符
參數(shù)
	Inbuff	待處理的字符串
	Outbuff	返回的字符串,返回的字符串不包含指定的字符
	pos		指定的位置
	ch		指定字符
返回
	ch所在的位置,-1	表示查詢ch時(shí)出現(xiàn)問題,
	如果字符串中無ch,則返回的ch=strlen(Inbuff),Outbuff的內(nèi)容為&Inbuff[pos]后面的所有內(nèi)容
	例如 原串為“12345678”,pos=2,ch=6,獲取后的字符串為“345”,則返回值為5.
*****************************************************************************/
int CMyString::GetStrBeforech(char *Inbuff,char *Outbuff,int pos,char ch)
{
	if(Inbuff == NULL || strlen(Inbuff) == NULL)
		return -1;
	sprintf(Outbuff,"%s",&Inbuff[pos]);	
	char tmp[2];
	memset(tmp,0,sizeof(tmp));
	sprintf(tmp,"%c",ch);
	int n=strcspn(Outbuff,tmp);
	if(n < 0)
	{
		memset(Outbuff,0,strlen(Outbuff));
		return -1;
	}
	memset(&Outbuff[n],0,strlen(Outbuff)-n);
	n=n+pos;
	return n;
}

/*****************************************************************************
功能
	獲得字符串中一個(gè)匹配字符串,該匹配字符串位于需要匹配的兩個(gè)字符串之間
參數(shù)
	Inbuff	待處理的字符串
	Outbuff	獲得的字符串
	begin	匹配起始字符串
	end		匹配結(jié)束字符串
*****************************************************************************/
void CMyString::GetMatchingStr(char *Inbuff,char *begin,char *end,char *Outbuff)
{
	if(Inbuff == NULL || begin == NULL || end == NULL)
		return;
	int n=0,m=0,i=0,pos1=0,pos2=0;
	char *tmp=Inbuff;
	m=LocateStr(tmp,begin,strlen(begin));
	if(m < 0)
		return;
	tmp=tmp+m+strlen(begin);
	pos1=m+strlen(begin);	//匹配得到的字符串的起始位置
	pos2=pos1;	
	i=1;
	for(;;)
	{
		m=LocateStr(tmp,begin,strlen(begin));
		n=LocateStr(tmp,end,strlen(end));
		if( n < 0)
			break;
		else if( m > 0)
		{
			if( m < n)
			{
				i++;
				tmp=tmp+m+strlen(begin);
				pos2=pos2+m+strlen(begin);
			}
			else
			{
				i--;
				tmp=tmp+n+strlen(end);
				pos2=pos2+n+strlen(end);
				if(i == 0)
				{
					pos2=pos2-strlen(end);
					break;
				}
			}
		}
		else		//m < 0  && n > 0
		{
			i--;	
			tmp=tmp+n+strlen(end);
			pos2=pos2+n+strlen(end);
			if(i == 0)
			{
				pos2=pos2-strlen(end);
				break;
			}
		}
	}
	memcpy(Outbuff,&Inbuff[pos1],pos2-pos1);
}
/*****************************************************************************
功能
	獲得一個(gè)字符串中某個(gè)字符間隔出來的段數(shù)
參數(shù)
	Inbuff		待處理的字符串
	Interbuff	間隔字符串
	Inlen		待處理的字符串的長(zhǎng)度
	Interlen	間隔字符串的長(zhǎng)度
返回
	獲得的段數(shù)
	-1	輸入的數(shù)據(jù)為空
	 0	輸入的字符串中不包含間隔字符串	
*****************************************************************************/
int CMyString::GetFieldsNumInbuff(unsigned char *Inbuff,unsigned char *Interbuff,int Inlen,int Interlen)
{
	if(Inbuff == NULL || Interbuff == NULL)
		return -1;
		
	unsigned char *tmp=NULL;
	tmp=Inbuff;
	int pos=0,i=0,len=Inlen;
	for(;;)
	{
		pos=LocateStrEx(tmp,Interbuff,len,Interlen);
		if(pos == -1)
			break;
		else
		{
			i++;
			len=len-pos-Interlen;
			tmp=tmp+pos+Interlen;
		}
	}
	return i;
}
/*****************************************************************************
功能
	獲得一個(gè)字符串中某個(gè)字符串間隔,而得到的某段數(shù)據(jù)
參數(shù)
	Inbuff		待處理的字符串
	Interbuff	間隔字符串
	Inlen		待處理的字符串的長(zhǎng)度
	Interlen	間隔字符串的長(zhǎng)度
	Segnum		需要獲得的第幾段,以0為基數(shù)。
	Outbuff		返回的字符串
返回
	獲得的段數(shù)
	-1	輸入的數(shù)據(jù)為空、間隔字符串為空或段數(shù)小于零
	 0	輸入的字符串中不包含間隔字符串	
舉例
	Inbuff="00000||11111||22222||33333",Interbuff="||",Inlen=26,Interlen=2
	Segnum=2,Outbuff="22222"
*****************************************************************************/
int CMyString::GetFieldInbuff(char *Inbuff,char *Interbuff,int Inlen,int Interlen,int Segnum,char *Outbuff)
{

	if(Inbuff == NULL || Interbuff == NULL || Inlen <=0 || Interlen <= 0 ||Segnum < 0)
		return -1;
				
	char *tmp=NULL;
	tmp=Inbuff;
	int pos=0,i=1,len=Inlen;
	for(;;)
	{
		pos=LocateStrEx((unsigned char *)tmp,(unsigned char *)Interbuff,len,Interlen);
		if(pos == -1)
		{
			if(i == Segnum)
			{
				sprintf(Outbuff,"%s",tmp);
			}
			break;
		}
		else
		{
			if(i == Segnum)
			{
				memcpy(Outbuff,tmp,pos);
				break;
			}
			else
			{
				i++;
				len=len-pos-Interlen;
				tmp=tmp+pos+Interlen;
			}
		}
	}
	return i;
}

/*****************************************************************************
功能
	清空字符串中某段位置,并把后面的數(shù)據(jù)前移
參數(shù)
	Inbuff	待操作的字符串
	begin	起始位置,該位置基于0計(jì)數(shù)
	end		結(jié)束位置,該位置基于0計(jì)數(shù)
	len		待操作的字符串的長(zhǎng)度
example				
	 Input	Inbuff="0123456789", begin=1,end=5,len=10,
	 output	Inbuff="056789"
*****************************************************************************/
void CMyString::ClearStrSegment(unsigned char *Inbuff,int begin,int end,int len)
{

	//出現(xiàn)下列情況之一,程序退出:
	//結(jié)束位置小于起始位置;輸入字符串長(zhǎng)度為空;
	//輸入字符串長(zhǎng)度小于字符串的結(jié)束位置;輸入字符串的長(zhǎng)度小于要清空的長(zhǎng)度
	if(begin > end || len ==0 || len < end  || len < end-begin)
		return;
	memcpy(&Inbuff[begin],&Inbuff[end],len-end);
	memset(&Inbuff[len-end+begin],0x00,end-begin);	
}
/*****************************************************************************
功能
	定位字符串中某個(gè)字符的位置
參數(shù)
	Inbuff	待操作的字符串
	ch		需要定位的字符
	len		需要處理的字符串的長(zhǎng)度
	bPos	TRUE	從字符串開始定位,獲取字符在字符串中的第一個(gè)位置
			FALSE	從字符串最后定位,獲取字符在字符串中的最后一個(gè)位置
返回
	定位得到的位置,該位置基于0計(jì)數(shù),-1 輸入數(shù)據(jù)有錯(cuò)誤,-2 無法查找到指定的字符
*****************************************************************************/
int CMyString::LocateCharInStr(LPCSTR Inbuff,char ch,int len,BOOL bPos)
{
	if(Inbuff == NULL || len <= 0)
		return -1;
	int i=0,step=1;
	if( !bPos )
	{
		i=len-1;
		step=-1;
	}

	for(;;)
	{
		if(i >= len || i < 0)
			break;
		if(Inbuff[i] == ch)
			break;
		i+=step;
	}
	//沒有查找到指定字符
	if( i == -1 || i == len)
		return -2;
	return i;
}
/*****************************************************************************
功能
	將十六進(jìn)制的字符串轉(zhuǎn)化為十進(jìn)制的字符串
參數(shù)
	szInbuff	待操作的字符串
	nInLen		輸入字符串的長(zhǎng)度
	szOutbuff	轉(zhuǎn)換后的數(shù)據(jù)
*****************************************************************************/
void  CMyString::HexToStr(unsigned char *szInbuff,int nInLen, LPSTR szOutbuff)
{
    int i;
    char *buff;
	i=2*nInLen+1;
	buff=(char *)malloc(i*sizeof(char));
	memset(buff,0,i*sizeof(char));

    for(i=0;i<nInLen;i++)
	    sprintf(&buff[i*2],"%2.2X",szInbuff[i]);
    buff[nInLen*2]=0;
	memcpy(szOutbuff,buff,2*nInLen);
	delete(buff);
}
/*****************************************************************************
功能
	將十進(jìn)制的字符串轉(zhuǎn)化為十六進(jìn)制的字符串
參數(shù)
	szInbuff	待操作的字符串
	nInLen		輸入字符串的長(zhǎng)度
	szOutbuff	轉(zhuǎn)換后的數(shù)據(jù)
*****************************************************************************/
int CMyString::StrToHex(LPCSTR szInbuff,int nInLen,unsigned char *szOutbuff)
{
   unsigned char dat;
   while (nInLen--) 
   {
      if (AscToHex(*szInbuff++, &dat))
		  return -1;
      *szOutbuff = *szOutbuff << 4 | dat;
      if (!(nInLen & 1))
	  {
		++szOutbuff;
      }
   }
   return 0;
}
/*****************************************************************************
功能
	將十進(jìn)制的字符轉(zhuǎn)化為十六進(jìn)制的字符
參數(shù)
	szInbuff	待操作的字符
	nInLen		輸入字符串的長(zhǎng)度
	szOutbuff	轉(zhuǎn)換后的數(shù)據(jù)
*****************************************************************************/
int CMyString::AscToHex(char Asc, unsigned char *szHex)
{
   if ((Asc >= '0') && (Asc <= '9'))
      *szHex = Asc - '0';
   else if ((Asc >= 'A') && (Asc <= 'F'))
      *szHex = Asc - 'A' + 10; 
   else if ((Asc >= 'a') && (Asc <= 'f'))
      *szHex = Asc - 'a' + 10;
   else
      return -1;
   return 0;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久婷婷色综合| 久久久久久久久久久久电影| 麻豆精品一区二区三区| 国产精品国产三级国产普通话99 | 91麻豆国产精品久久| 日本不卡中文字幕| 中文字幕av不卡| 欧美v国产在线一区二区三区| 色综合欧美在线视频区| 精品一区二区三区视频在线观看| 亚洲美女免费视频| 国产婷婷色一区二区三区四区 | 奇米一区二区三区av| 中文字幕一区二区三区在线播放| 日韩视频一区二区三区在线播放| 91麻豆国产在线观看| 成人永久看片免费视频天堂| 美女被吸乳得到大胸91| 午夜精品久久久久久久蜜桃app| 中文在线资源观看网站视频免费不卡| 日韩欧美一区中文| 欧美影视一区在线| 日韩一区二区三区av| 色综合久久久久网| 成人一级片网址| 久久国产夜色精品鲁鲁99| 亚洲国产精品久久久男人的天堂| 中文字幕一区二区三区不卡| 久久综合九色综合久久久精品综合 | 国产丝袜欧美中文另类| 日韩欧美区一区二| 日韩西西人体444www| 在线观看www91| 欧美性高清videossexo| 日本精品一区二区三区高清| 99vv1com这只有精品| 国产成人av影院| 国产精品中文字幕日韩精品| 国产精品一区在线| 国产高清一区日本| 国产福利精品导航| 国产一区二区三区免费观看| 精品一区二区三区免费观看 | 欧美韩国日本一区| 欧美探花视频资源| 欧美日韩免费高清一区色橹橹 | 日韩视频在线一区二区| 欧美一区二区三区影视| 欧美日韩不卡一区二区| 欧美精品在线一区二区三区| 欧美理论片在线| 3d动漫精品啪啪| 777午夜精品免费视频| 欧美一级二级在线观看| 日韩精品一区二区三区四区| 精品剧情在线观看| 国产人妖乱国产精品人妖| 国产精品视频看| 亚洲精品菠萝久久久久久久| 一区二区三区在线高清| 亚洲一区二区中文在线| 在线观看亚洲成人| 欧美日韩在线播放一区| 欧美一区二区在线免费观看| 久久综合久久99| 中文字幕在线免费不卡| 一区二区三区 在线观看视频 | 国产福利视频一区二区三区| 白白色 亚洲乱淫| 精品污污网站免费看| 欧美一区二区三区在线| 中文字幕第一区二区| 亚洲高清视频中文字幕| 国产一区在线不卡| 91老师国产黑色丝袜在线| 欧美日韩视频在线观看一区二区三区| 91精品国产91久久综合桃花| 久久精品免费在线观看| 亚洲激情在线激情| 久久国产精品露脸对白| 亚洲成av人综合在线观看| 美女视频网站久久| 欧美亚一区二区| 亚洲午夜精品网| 99综合电影在线视频| 国产精品视频在线看| 免费在线观看成人| 亚洲r级在线视频| 国产成人av一区二区三区在线| 555www色欧美视频| 亚洲国产另类av| 91国模大尺度私拍在线视频| 国产精品久久久久久妇女6080 | 亚洲欧美经典视频| 天堂精品中文字幕在线| 97se亚洲国产综合自在线| 国产女主播一区| 国产色一区二区| 国产亚洲精品aa| 亚洲综合色网站| 国产呦萝稀缺另类资源| 国产在线播精品第三| 日韩国产欧美三级| 中文字幕一区在线观看视频| 懂色av中文一区二区三区| 亚洲欧美偷拍三级| 亚洲欧美另类小说视频| 国产精品久久久久一区| 日韩欧美国产三级| 奇米精品一区二区三区四区| 久久久www免费人成精品| 欧美片网站yy| 国产精品资源在线看| 亚洲另类一区二区| 欧美一区欧美二区| 国产福利视频一区二区三区| 精品国产乱码久久久久久浪潮| 99久久伊人久久99| 午夜精品123| 日韩精品三区四区| 亚洲精品视频一区| 国产黄色91视频| 日日夜夜一区二区| 亚洲精品一二三区| 国产精品你懂的在线欣赏| 久久一二三国产| 欧美精品一区二区高清在线观看| 91福利社在线观看| 国产成人亚洲综合a∨婷婷图片| 成人av在线一区二区| 美女性感视频久久| 日本美女一区二区三区视频| 香蕉久久一区二区不卡无毒影院 | 精品系列免费在线观看| 国产午夜精品久久| 欧美人伦禁忌dvd放荡欲情| 狠狠色狠狠色综合系列| 青青青爽久久午夜综合久久午夜| 另类调教123区| jvid福利写真一区二区三区| 盗摄精品av一区二区三区| 成人国产视频在线观看| 国v精品久久久网| 高清不卡一二三区| 91蜜桃传媒精品久久久一区二区| 91同城在线观看| www.亚洲精品| 成人综合激情网| 成人激情黄色小说| 成人午夜精品一区二区三区| 久久超级碰视频| 国内精品不卡在线| 久久精品国产网站| 国产成人在线电影| 一本大道综合伊人精品热热| 欧美激情艳妇裸体舞| 免费在线看成人av| 蓝色福利精品导航| 亚洲欧美日韩久久| 精品国产乱码久久| 色综合久久综合网欧美综合网| 日韩va欧美va亚洲va久久| 国产精品美女www爽爽爽| 欧美一区二区三区在线| 99免费精品视频| 九九九精品视频| 一区二区三区免费观看| 久久久久88色偷偷免费| 欧美亚洲国产bt| www..com久久爱| 紧缚奴在线一区二区三区| 亚洲激情av在线| 精品国产凹凸成av人导航| 欧美熟乱第一页| 99国产精品99久久久久久| 韩国av一区二区| 日精品一区二区三区| 综合中文字幕亚洲| 久久免费的精品国产v∧| 欧美理论电影在线| 97精品国产露脸对白| 国产精品一线二线三线精华| 视频一区免费在线观看| 亚洲美女精品一区| 国产精品第五页| 久久久国产精品麻豆| 日韩精品一区二区在线| 欧美日韩精品一二三区| 色综合久久久久久久久| 成人午夜视频免费看| 精品一区二区综合| 日本视频一区二区| 亚洲bt欧美bt精品777| 亚洲永久精品国产| 亚洲色图制服丝袜| 中文字幕一区二区三区在线播放| 久久久久久9999| 日韩精品中文字幕在线一区| 欧美精品一级二级| 欧美图区在线视频|