📄 formatstr.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 + -