📄 splitstring.cpp
字号:
#include "SplitString.h"
int SplitString::Include(char s)const
{
if(s==' '||s=='\n'||s=='\t'||s=='\r')
return 0;
else if(s==','||s=='('||s==')'||s==';'||s=='*')
return 1;
else if(s=='\'')
return 3;
else if(s=='='||s=='!'||s=='>'||s=='<')
return 4;
else
return 2;
}
Words SplitString::GetWords(int &position,int length)const
{
char currflag;
char nextflag;
Words temp;
temp.startPos=position;
while(position<length)
{
currflag=Include(m_inputstr[position]);
nextflag=Include(m_inputstr[position+1]);
if(currflag==3)
{
temp.startPos=position++;
while((currflag=Include(m_inputstr[position]))!=3)
{
if(position==length)
{
temp.endPos=position-1;
return temp;
}
position++;
}
temp.endPos=position++;
return temp;
}
else if(currflag==4&&nextflag!=4)
{
temp.endPos=position++;
return temp;
}
else if(currflag==2&&nextflag!=2)
{
temp.endPos=position++;
return temp;
}
else if(currflag==1)
{
temp.endPos=position++;
return temp;
}
else if(currflag==0)
{
position++;
temp.startPos++;
}
else
{
position++;
}
}
if(Include(m_inputstr[position-1])==0)position++;
return temp;
}
int SplitString::FindSplitWords(vector<Words>& splits)
{
int lastPos=(int)m_inputstr.size();
int numOfWords=0;
Words temp;
int position=0;
while((position<lastPos))
{
temp=GetWords(position,lastPos);
if(position<=lastPos)
{
if(numOfWords>=(int)splits.size())
splits.resize(splits.size()+1);
splits[numOfWords].startPos=temp.startPos;
splits[numOfWords].endPos=temp.endPos;
numOfWords++;
}
}
return numOfWords;
}
int SplitString::SplitWords(vector<string> &words)
{
vector<Words> splitPos(2);
int numOfWords=FindSplitWords(splitPos);
for(int i=0;i<numOfWords;i++)
words.push_back(string(m_inputstr,splitPos[i].startPos,
splitPos[i].endPos-splitPos[i].startPos+1));
return numOfWords;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -