定义一个字符串类CString,设计一个算法实现:字符串str1在字符串str中出现时,用字符串str2进行替换。具体要求如下。(1)私有数据成员。1、char *str:原始字符串。2、char *str1:目标字符串。3、char *str2:替换字符串。4、int flag:标记替换是否完成。(2)公有成员函数。1、CString(char *s,char s1[],char *s2):用给定的参数s,s1,s2初始化数据成员str、str1、str2.flag设置缺省值0.2、void Replace():判断str字符串中是否出现str1,若出现就用str2替换,否则什么都不做。若替换成功了标记flag为1,若替换不成功则标记flag为0.3、void Show():若替换成功,则在屏幕上显示目标字符串、替换字符串和替换后的原始字符串;若不成功则显示原始字符串。4、~CString():释放动态分配的空间。(3)在主程序中定义字符串char s[]+"I am a student,you are student too,we are all student."作为原始字符串,定义char s1[]="student"作为目标字符串,定义char s2[]="teacher"作为替换字符串。定义一个CString类对象test,用s、s1、s2初始化test,完成对该类的测试。
时间: 2023-03-31 09:03:48 浏览: 323
我可以回答这个问题。根据题目要求,可以定义一个CString类,其中包含私有数据成员和公有成员函数。私有数据成员包括原始字符串、目标字符串、替换字符串和标记替换是否完成的标志。公有成员函数包括构造函数、替换函数、显示函数和析构函数。
在主程序中,可以定义一个原始字符串s,一个目标字符串s1和一个替换字符串s2,然后用它们来初始化一个CString类对象test。接着,可以调用test的替换函数Replace(),判断原始字符串中是否出现目标字符串,若出现就用替换字符串替换,否则什么都不做。若替换成功了标记flag为1,若替换不成功则标记flag为。最后,可以调用test的显示函数Show(),若替换成功,则在屏幕上显示目标字符串、替换字符串和替换后的原始字符串;若不成功则显示原始字符串。最后,记得释放动态分配的空间。
具体实现细节可以参考下面的代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
class CString {
private:
char *str; // 原始字符串
char *str1; // 目标字符串
char *str2; // 替换字符串
int flag; // 标记替换是否完成
public:
// 构造函数
CString(char *s, char s1[], char *s2) {
str = new char[strlen(s) + 1];
strcpy(str, s);
str1 = new char[strlen(s1) + 1];
strcpy(str1, s1);
str2 = new char[strlen(s2) + 1];
strcpy(str2, s2);
flag = ;
}
// 替换函数
void Replace() {
char *p = strstr(str, str1);
if (p != NULL) {
char *temp = new char[strlen(str) + strlen(str2) - strlen(str1) + 1];
strncpy(temp, str, p - str);
temp[p - str] = '\';
strcat(temp, str2);
strcat(temp, p + strlen(str1));
delete[] str;
str = temp;
flag = 1;
} else {
flag = ;
}
}
// 显示函数
void Show() {
if (flag == 1) {
cout << "目标字符串:" << str1 << endl;
cout << "替换字符串:" << str2 << endl;
cout << "替换后的字符串:" << str << endl;
} else {
cout << "原始字符串:" << str << endl;
}
}
// 析构函数
~CString() {
delete[] str;
delete[] str1;
delete[] str2;
}
};
int main() {
char s[] = "I am a student,you are student too,we are all student.";
char s1[] = "student";
char s2[] = "teacher";
CString test(s, s1, s2);
test.Replace();
test.Show();
return ;
}
```
阅读全文