|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 1579103680 于 2020-2-17 14:42 编辑
定义一个字符串类 CString,并设计一个算法实现,给定关键字 str1 在字符串 str 中出现时用关键字 str2 进行替换的功能。
具体要求如下:
(1)私有数据成员
char *str; 原始字符串。
char *str1; 目标关键字。
char *str2; 替换关键字。
int flag;标记替换是否完成替换。
(2)公有成员函数
CString (char *s,char s1[ ],char *s2) :用给定的参数s、s1 和s2 相对应的初始化数据成员str、str1 和str2。flag设置缺省 0。
void Replace () :判断str字符串中是否出现str1,若出现就用str2 替换,否则什么都不做。若替换成功了标记flag为 1,若替换不成功则标记flag为 0。
void Show( ) :若替换成功,则在屏幕上显示目标关键字、替换关键字和替换后的原始字符串;若不成功则显示原始字符串。
~ 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,完成对该类的测试。
- #include <iostream>
- #include <string.h>
- using namespace std;
- class CString
- {
- public:
- CString(char *s, char s1[], char *s2);
- void Replace();
- void Show();
- ~CString();
-
- private:
- char *str;
- char *str1;
- char *str2;
- int flag;
- };
- CString::CString(char *s, char s1[], char *s2)
- {
- str = new char[strlen(s) + 1];
- str1 = new char[strlen(s1) + 1];
- str2 = new char[strlen(s2) + 1];
-
- strcpy(str, s);
- strcpy(str1, s1);
- strcpy(str2, s2);
-
- flag = 0;
-
- }
- void CString::Replace()
- {
- char *temp1 = str1;
- char *temp_str = str;
- while (*temp_str!='\0')
- {
- while(*temp_str == *temp1)
- {
- temp_str++;
- temp1++;
- if(*temp1 == '\0')
- {
- flag = 1;
-
- char *r_str = new char[strlen(temp_str) + 1];
- strcpy(r_str, temp_str); //取出要目标字符串后面的字符串
- char *l_str = temp_str-strlen(str1); //指向目标字符串
- strcpy(l_str, str2); //复制替换目标字符串
- strcat(l_str, r_str); //拼接两段字符串
- temp_str = temp_str-strlen(str1)+strlen(str2)-1; //temp_str指向替换了的字符串末尾
- delete[] r_str;
- }
- }
- if(strlen(temp_str)<strlen(str1))
- break;
- temp_str++;
- temp1 = str1;
- }
- }
- void CString::Show()
- {
- if(flag == 1)
- {
- cout << "目标关键字:" << str1 <<endl;
- cout << "替换关键字:" << str2 << endl;
- cout << "替换字符串:" << str << endl;
- }
- else
- {
- cout << "原始字符串:" << str << endl;
- }
- }
- CString::~CString()
- {
- if (str != NULL) {
- delete[] str;
- str = NULL;
- }
- if (str1 != NULL) {
- delete[] str1;
- str1 = NULL;
- }
- if (str2 != NULL) {
- delete[] str2;
- str2 = NULL;
- }
- }
- int main(int argc, const char * argv[]) {
-
- 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 0;
- }
复制代码
|
|