/************************************************************************/ /* 例子:請寫出一個函數(shù)來模擬c++中的strstr函數(shù):該函數(shù)的返回值是主傳中字符子串的位 置以后的所有字符,請不要使用任何c程序已有的函數(shù) 函數(shù)名: strstr
函數(shù)原型:extern
char *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)//此時第一個不是匹配的 { i++; } else//此時已經(jīng)匹配了k個字符 { i += k; } } return Results; } int main() { string sub = "ask"; //解析:刪除的是指定字符a s k,不是字符串"ask",所以將str中的每個字符都與sub中的字符比較, //如果相等,則停止,比較下一個。因?yàn)閯h除的最好辦法是把不刪除的東西提取出來。 string str = "askdaskaskdaskgasg"; string str2 =
LeftSting(str,sub); cout <<str2<<endl; return 0; } |
|