/************************************************************************/
/* 例子:請(qǐng)寫出一個(gè)函數(shù)來模擬c++中的strstr函數(shù):該函數(shù)的返回值是主傳中字符子串的位
置以后的所有字符,請(qǐng)不要使用任何c程序已有的函數(shù)
函數(shù)名: strstr
函數(shù)原型:externchar *strstr(char *str1, char *str2);
功能:找出str2字符串在str1字符串中第一次出現(xiàn)的位置(不包括str2的串結(jié)束符)。
返回值:返回該位置的指針,如找不到,返回空指針。 */
/************************************************************************/
string LeftSting(const string &Srcstr, const string &Substr)
{
string Results("");
int i = 0;
while(i < Srcstr.size())
{
int j = i;
int k = 0;
while(k < Substr.size())
{
if(Srcstr[j] == Substr[k])
{
j++;
k++;
}
else
break;
}
if(k == Substr.size())//找到了子串
{
for(int t = i; t < Srcstr.size(); t++)
Results += Srcstr[t];
break;
}
else if(k == 0)//此時(shí)第一個(gè)不是匹配的
{
i++;
}
else//此時(shí)已經(jīng)匹配了k個(gè)字符
{
i += k;
}
}
return Results;
}
int main()
{
string sub = "ask"; //解析:刪除的是指定字符a s k,不是字符串"ask",所以將str中的每個(gè)字符都與sub中的字符比較,
//如果相等,則停止,比較下一個(gè)。因?yàn)閯h除的最好辦法是把不刪除的東西提取出來。
string str = "askdaskaskdaskgasg";
string str2 =LeftSting(str,sub);
cout <<str2<<endl;
return 0;
}
聯(lián)系客服