给定两个字符串对象S,P(P的长度小于S),实现一判断函数find,检测S是否完全包含P(串P是S的子串),若包含则返回P第一个字符在串S中的起始地址,否则返回-1。
#include<iostream. h>
#include<string>
class str{
string s,p;
public:str(string&a,string&b){s=a;p=b;}
...find(...);

给定两个字符串对象S,P(P的长度小于S),实现一判断函数find,检测S是否完全包含P(串P是S的子串),若包含则返回P第一个字符在串S中的起始地址,否则返回-1。
#include<iostream. h>
#include<string>
class str{
string s,p;
public:str(string&a,string&b){s=a;p=b;}
...find(...);
};
请写出函数的过程(如果需要形式参数,请给出形参类型和数量,以及返回值类型)


【正确答案】:

INT STR: :FIND( ){
INT I=0,J=0;
CHAR *M=P,*N=S;
WHILE(I<=S.SIZE-P.SIZE)
{ WHILE(*M++=*N++)
IF(++J==P.SIZE)RETURN I;
I++;M=P;J=0;N=S[I];
}
RETURN -1;
}


【题目解析】:

如果成员函数定义在类体外,则类体内必须要有函数原型,类体外函数定义的前面必须用“类名::”来限定,格式如下:
返回值类型 类名::成员函数名(参数列表)
{
成员函数的函数体
}


Top