c++编程,求大神!建立一个WORD类,统计一个英文字符串中的英文单词个数及在字符串中查找指定子串。

建立一个WORD类,统计一个英文字符串中的英文单词个数及在字符串中查找指定子串。字符串中的各英文单词以一个或多个空格分隔。如字符串“I am a student”中英文单词个数为4.
具体要求如下:
(1)私有数据成员:
char str[80] 存放字符串
int c 存放字符串str中的英文单词的个数
(2)公有成员函数:(以下为必须提供的,除此外的辅助函数自行设计)
WORD(char *s) 构造函数,用参数s初始化str,同时初始化单词个数c为0
void process() 统计字符串中的英文单词个数
int issub(char *s) 在字符串str中查找s串,若找到,返回指定串的首字符的位置,若没有,则返回-1
WORD operator-(WORD& s) 在当前对象的字符串str中删除s对象中的str代表的字符串
void print() 输出字符串及单词个数

第1个回答  2015-07-09
时间有限,粗略写了几个,看看吧,写的不是那么完全就是了。

class CWord
{
public:
CWord(char *s);

void process();
int issub(char *s);
CWord operator-(CWord& s);
void print();
private:
char str[80];//存放字符串
int count;//英文单词的个数
};

CWord::CWord(char *s)
{
strcpy_s(str, "");
if(s != NULL)
{
strcpy_s(str, s);
}
count = 0;
}

void CWord::print()
{
cout << "字符串为:"<< str;
cout << ",单词个数为:" << count <<endl;
}
void CWord::process()
{
char* temp = str;
temp++;
while(*temp != '\0')
{
if(*temp == 32 && *(--temp) != 32)
{
count++;
}
temp+=2;
}
if(*(--temp) != 32)
{
count++;
}
}

int CWord::issub(char* sub_str)
{
//在字符串str中查找s串,若找到,返回指定串的首字符的位置,若没有,则返回-1
int pos = 0;
char* src_str = str;
while (*src_str != '\0')
{
pos++;
if(*src_str == *sub_str)
{
char* temp1 = src_str;
char* temp2 = sub_str;
while(*temp2 != '\0' && *temp1 != '\0')
{
if(*(temp1++) != *(temp2++))
break;
}
if(*temp2 == '\0')
{
return pos;
}
}
src_str++;
}

return -1;
}本回答被提问者和网友采纳