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

📄 xstring.cpp

📁 该程序是用vc开发的对动态数组进行管理的DLL
💻 CPP
📖 第 1 页 / 共 2 页
字号:
int XString::find( const char * str, int index  , bool cs  ){	int i;	int len=strlen(str);	if(index < 0 )index=0;	for(i=index;i<m_nLength;)	{  		if(cs)		{			if(m_pString[i] == str[0])			{									if( mid(i,len) == str )						return i;					else 						i ++;			}			else 				i ++;		}		else //cs == false		{			if( XString(m_pString[i]).lower() == XString(str[0]).lower())			{									if( mid(i,len).lower() == XString(str).lower() )						return i;					else 						i ++;			}			else 				i ++;					}	}	return -1;}XString XString::left(  int len ){	return  mid(0,len) ;}XString XString::right(  int len ){	return   mid(m_nLength-len,len) ;	}XString XString::mid(  int index,  int len ){	if(index < 0)index=0;	char *tmp=new char[m_nLength+1];	memset(tmp,'\0',m_nLength+1);	for(int i = index; i < index + len; i ++)	{		if(i < m_nLength)			tmp[i-index]=m_pString[i];		else 			break;	}	XString xstr=tmp;	delete []tmp;	return xstr;}XString XString::lower(){	int i;	for(i = 0; i < m_nLength; i++)	{		if( m_pString[i] >= 'A' && m_pString[i] <= 'Z' )			m_pString[i] += 32;	}	return XString(m_pString);		}XString XString::upper(){	int i;	for(i = 0; i < m_nLength; i++)	{		if( m_pString[i] >= 'a' && m_pString[i] <= 'z' )			m_pString[i] -= 32;	}	return XString(m_pString);	}XString XString::stripWhiteSpace(){	int i,j,s=0,e=0;	for(i = 0, j = 0; i < m_nLength; i++)	{		if(    m_pString[i] == 9 			|| m_pString[i] == 10  			|| m_pString[i] == 11 						|| m_pString[i] == 12 			|| m_pString[i] == 13 						|| m_pString[i] == 32 )		{			if (j != i)break;			j ++;s=j;		}	}	for(i = 0, j = 0; i < m_nLength; i++)	{		if(    m_pString[ m_nLength - i -1] == 9 			|| m_pString[ m_nLength - i -1] == 10  			|| m_pString[ m_nLength - i -1] == 11 						|| m_pString[ m_nLength - i -1] == 12 			|| m_pString[ m_nLength - i -1] == 13 						|| m_pString[ m_nLength - i -1] == 32 )		{			if (j != i)break;			j ++;		}	}	e=m_nLength - j -1;	char *tmp=new char[m_nLength+1];	memset(tmp,'\0',m_nLength+1);	for(i = s; i <= e; i++)		tmp[i-s]=m_pString[i];		XString xstr=tmp;	delete []tmp;		return xstr;	}XString XString::simplifyWhiteSpace(){	XString str=stripWhiteSpace();	int i,j;	char *tmp=new char[m_nLength+1];	memset(tmp,'\0',m_nLength+1);	for(i = 0,j = 0; i < str.m_nLength; i++,j++)	{		if(    str.m_pString[i] == 9 			|| str.m_pString[i] == 10  			|| str.m_pString[i] == 11 						|| str.m_pString[i] == 12 			|| str.m_pString[i] == 13 			)tmp[j]=' ';		else			tmp[j]=str.m_pString[i];	}	char *tmp1=new char[m_nLength+1];	memset(tmp1,'\0',m_nLength+1);	for(i = 0,j = 0; i < (int)strlen(tmp); i++)	{		if( tmp[i] == 32			&& tmp[i+1] == 32			)continue;			tmp1[j++]=tmp[i];	}	XString xstr=tmp1;	delete []tmp;	delete []tmp1;		return xstr;}XString & XString::insert( int index, XString & xstr ){	insert(index,xstr.m_pString);	return *this;	}XString & XString::insert( int index, char * str ){	if(index < 0)index = 0;	if(index > m_nLength)index=m_nLength;	int lenstr=strlen(str);	char *newstr=new char[lenstr + m_nLength +1];	memset(newstr,'\0',lenstr + m_nLength +1);	int i;	for(i = 0; i < index; i ++)	{		newstr[i]=m_pString[i];	}	for(i = index; i < index+lenstr; i ++)	{		newstr[i]=str[i - index];	}	for(i = index + lenstr; i < lenstr + m_nLength ; i ++)	{		newstr[i]=m_pString[i-lenstr];	}	delete []m_pString;	m_pString = newstr;	m_nLength = lenstr + m_nLength;	return *this;}XString & XString::insert( int index, char c ){	char tmp[2];	tmp[0] = c;	tmp[1] = '\0';	insert(index,tmp);	return *this;	}XString & XString::replace( char *delstr, char * insstr,bool cs ){	int i;	XString str("");	XString newxstr("");	str=m_pString;	while( (i = str.find(delstr, 0, cs)) != -1)	{		newxstr += str.left(i);		newxstr += insstr;		str = str.right(str.m_nLength - i - strlen(delstr) );	}	newxstr += str;	delete []m_pString;	m_nLength = newxstr.m_nLength;	m_pString = new char[m_nLength + 1];	memset(m_pString, '\0', m_nLength + 1);		strcpy(m_pString,newxstr.m_pString);	return *this;}XString & XString::replace( XString & delxstr, XString & insxstr,bool cs  ){	return replace(delxstr.m_pString,insxstr.m_pString,cs);}XString & XString::replace( char *delstr, XString & insxstr,bool cs  ){	return replace(delstr,insxstr.m_pString,cs);	}XString & XString::replace( XString & delxstr, char * insstr,bool cs  ){	return replace(delxstr.m_pString,insstr,cs);	}XString & XString::replace( char delstr, char insxstr,bool cs  ){	char tmp1[2],tmp2[2];	tmp1[0]=delstr;	tmp2[0]=insxstr;	tmp1[1]=tmp2[1]='\0';	return replace(tmp1,tmp2,cs);}int XString::contain( const char * str, bool cs  ){	int i,n=0;	XString str1("");	str1=m_pString;	while( (i = str1.find(str, 0, cs)) != -1)	{		n++;		str1 = str1.right(str1.m_nLength - i - strlen(str) );	}	return n;	}int XString::contain( const char str, bool cs  ){	char tmp2[2];	tmp2[0] = str;	tmp2[1] = '\0';	return contain(tmp2,cs);}int XString::contain( const XString & str, bool cs  ){	return contain(str.m_pString,cs);	}XString XString::section( const char * sep, int start ){	int i,t=0,s=0,e=0,len=strlen(sep);	if(start < 0)start=0;	XString xstr("");	xstr=sep;	xstr+=m_pString;	xstr+=sep;	i=t=0;	while ( (i = xstr.find(sep, i)) != -1) 	{		t++;		i += len;	}	if( t-2 < start )		return XString("");		i=t=0;	while ( (i = xstr.find(sep, i)) != -1) 	{		if(t == start)		{			s=i;			break;		}		t++;		i += len;	}	i=t=0;	e=xstr.m_nLength;	while ( (i = xstr.find(sep, i)) != -1) 	{		if(t == start + 1)		{			e=i;			break;		}		t++;		i += len;	}	//cio<<s<<"----"<<e<<enter;	if( xstr.mid(s,e-s) == sep )		return XString("");	else return XString(xstr.mid(s+len,e-s-len));}XString XString::section( const char  sep, int start ){	char tmp[2];	tmp[0]=sep;	tmp[1]='\0';	return section(tmp,start);	}XString XString::section( const XString &  sep, int start ){	return section(sep.m_pString,start);	}XString XString::section( const char * sep, int start,int end ){		{			int i,t=0,len=strlen(sep);			XString xstr("");			xstr=sep;			xstr+=m_pString;			xstr+=sep;			i=t=0;			while ( (i = xstr.find(sep, i)) != -1) 			{				t++;				i += len;			}			if( t-2 < start )start = t-2;			if( t-2 < end )end = t-2;	}	int i;	XString xstr("");	for(i=start; i<=end; i++)	{		xstr+=section(sep,i);		if(i != end)			xstr+=sep;	}	return XString(xstr);}XString XString::section( const char  sep, int start,int end){ 	char tmp[2];	tmp[0]=sep;	tmp[1]='\0';	return section(tmp,start,end);	}XString XString::section( const XString &  sep, int start,int end ){ 	return section(sep.m_pString,start,end);	}int XString::setWidth( long len){	delete []m_pString;	m_nLength=len;	m_pString=new char[len+1];	memset(m_pString,'\0',len + 1);	return 1;}XString &	XString::fill(char ch){	for(int i=0;i<m_nLength;i++)		m_pString[i]=ch;	return *this;}XString	XString::reverse(){	char a;	for(int i=0;i<m_nLength/2;i++)	{		a=m_pString[m_nLength - 1 - i];		m_pString[m_nLength - 1 - i] = m_pString[i];		m_pString[i]=a;	}	return *this;}char XString::at( int i ){	if(i<0)i=0;	if(i>m_nLength - 1)i=m_nLength - 1;	return m_pString[i];}char XString::operator[] ( int i ){	return at(i);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -