/************************************************************************/ /* 例子:请写出一个函数来模拟c++中的strstr函数:该函数的返回值是主传中字符子串的位 置以后的所有字符,请不要使用任何c程序已有的函数 函数名: strstr
函数原型:extern
char *strstr(char *str1, char *str2); 功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。 返回值:返回该位置的指针,如找不到,返回空指针。 */ /************************************************************************/ 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)//此时第一个不是匹配的 { i++; } else//此时已经匹配了k个字符 { i += k; } } return Results; } int main() { string sub = "ask"; //解析:删除的是指定字符a s k,不是字符串"ask",所以将str中的每个字符都与sub中的字符比较, //如果相等,则停止,比较下一个。因为删除的最好办法是把不删除的东西提取出来。 string str = "askdaskaskdaskgasg"; string str2 =
LeftSting(str,sub); cout <<str2<<endl; return 0; } |
|