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

📄 formatstr.cpp

📁 简单分类器 VC++ 用于简单的分类
💻 CPP
字号:
#include "StdAfx.h"
#include ".\formatstr.h"

//如果没有找到cSep, str返回字符串的最后位置, *str==0
char* GetSubStr(char*& str, char cSep, char cLeft, char cRight)
{
	char *p=str, *p1=str, c;
	int nLevel = 0;
	if(cSep)
	{
		while(c = *p1)
		{
			if(c==cLeft)
				nLevel++;
			else if(c==cRight && nLevel>0)
				nLevel--;
			else if(c==cSep && nLevel==0)
				break;
			p1++;
		}
	}
	else
	{
		while(c = *p1)
		{
			if(c==cLeft)
			{
				nLevel++;
				if(nLevel == 1)
					p = p1+1;
			}
			else if(c==cRight)
			{
				if(nLevel==1)
					break;
				nLevel--;
			}
			p1 ++;
			if(nLevel==0)
				p = p1;
		}
	}
	if(*p1)
	{
		str = p1+1;
		//删除剩余字符串前面的空格
		while(*str && *str == ' ')
			str++;
	}
	else
		str = p1;
	*p1 = 0;
	if(p1 > p)
		p1--;
	//删除函数返回字符指针后面的空格和回车
	//p1--;
	while(p1>p && (*p1==' '||*p1=='\r'||*p1=='\n'))
		p1--;
	//删除参数返回字符串左边的空格
	while(p<p1 && *p == ' ')
		p++;
	return p;
}

//删除左右的c字符
void TrimStr(LPTSTR& str, TCHAR c)
{
	while(*str && *str == c)
		str++;
	LPTSTR p = &str[strlen(str)-1];
	while(p>str && *p == c)
	{
		*p = 0;
		p--;
	}
}

//删除空白
void TrimSpace(LPTSTR& str)
{
	while(*str && (*str==' '||*str=='	'||*str=='\n'||*str=='\r '))
		str++;
	LPTSTR p = &str[strlen(str)-1];
	while(p>str && (*p==' '||*p=='	'||*p=='\n'||*p=='\r'))
	{
		*p = 0;
		p--;
	}
}

WORD GetWChar(LPCTSTR& str)
{
	WORD w = 0;
	char c = *str;
	if(c<0) //双字节字符
	{
		w = *(++str);
		w = (w<<8) | (c&0x00ff);
	}
	else
		w = c;
	str++;
	return w;
}

//str must be 4 bytes
void WordToStr(WORD w, char* str)
{
	memset(str, 0, 4);
	memcpy(str, &w, 2);
}

//返回字符数.
long DBCSStrLen(const char *lpszStr)
{
	long len = 0;
	while(*lpszStr)
	{
		len++;
		if(*lpszStr<0)
			lpszStr++;
		lpszStr++;
	}
	return len;
}

long DBCSInStr(const char* lpszStr, const char* lpszSub)
{
	char *p = strstr(lpszStr, lpszSub);
	long len = 0;
	while(lpszStr<p)
	{
		len++;
		if(*lpszStr<0)
			lpszStr++;
		lpszStr++;
	}
	return len;
}

/*CString TrimSpaces(LPCTSTR lpszStr)
{
	char strTmp[MAX_SENTENCE_LEN];
	int i=0, j = 0;
	char c;
	while(c = lpszStr[i++])
	{
		if(c != ' ')
			strTmp[j++] = c;
	}
	strTmp[j] = 0;
	return CString(strTmp);
}*/

int WildStrCmp(const char* sWild, const char* s2)
{
	while(*sWild && *s2)
	{
		if(*sWild == '*') //一旦出现*, 则判断为相等.
			return 0;
		else if(*sWild == '?' || *sWild == *s2)
		{
			sWild++, s2++;
			continue;
		}
		else if(*sWild > *s2)
			return 1;
		else
			return -1;
	}
	return *sWild? (*sWild=='*'?0:1): (*s2? -1: 0);
}

⌨️ 快捷键说明

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