字符串操作

定义一个基类BaseString,实现基本的输入字符串的功能。再分别定义三个派生类,要求如下:

  1.定义一个ReString类,公有继承基类BaseString,实现字符串的倒置功能。如,将字符串“1234abcd”,倒置后这“dcba4321”。

  2.定义一个CopyString类,公有继承基类BaseString,实现字符串的复制功能。

  3.定义一个CmpString类,私有继承基类BaseString,实现字符串的比较功能。

基类BaseString部分定义如下:

class BaseString {

char *Chstr;

int Length;

public:

BaseString(char *s); 

};

测试用例说明:

1.输入第一行是ReString类数据,用于数据倒置;

2.输入第二行是CopyString类数据,用于数据复制;

3.输入第三、四行是CmpString类数据,用于两个字符串比较,输出比较结果。
测试用例1

12345 55↵
Look↵
Book↵
Book↵
倒序输出:55 54321↵
复制输出:Look↵
判断结果:两字符串相等。
#include <iostream>
#include <cstring>

using namespace std;

class BaseString {
public:
	BaseString(){}
	BaseString(char *s)
		:Chstr(s)
	{
		Length = strlen(Chstr);
	}
	char * CH(void)const { return Chstr; }
	int Len(void)const { return Length; }
private:
	char *Chstr;
	int Length;
};

class ReString:public BaseString {
public:
	ReString(char *s)
		:BaseString(s)
		{}
	void Re(void) {
		cout << "倒序输出:";
		for (char *p = CH() + Len() - 1; p >= CH(); p--) {
			cout << *p;
		}
		cout << endl;
	}
};

class CopyString :public BaseString {
public:
	CopyString(char *s)
		:BaseString(s)
		{}
	void Copy(void) {
		cout << "复制输出:" << CH() << endl;
	}
};

class CmpString :private BaseString {
public:
	CmpString(char *s1, char *s2)
		:Chstr1(s1),Chstr2(s2)
		{}
	void Cmp(void) {
		char *p = Chstr1;
		char *q = Chstr2;
		while (*p != '\0' && *q != '\0' && *q == *p) {
			p++;
			q++;
		}
		if (*p ==*q) {
			cout << "判断结果:两字符串相等。" << endl;
		}
		else {
			cout << "判断结果:两字符串不相等。" << endl;
		}
	}
private:
	char *Chstr1;
	char *Chstr2;
};

int main() {
	char *c1=new char[80];
	char *c2=new char[80];
	char *c3 = new char[80];
	char *c4 = new char[80];
	cin.getline(c3, 80);
	ReString r(c3);
	cin.getline(c4, 80);
	CopyString co(c4);
	cin.getline(c1, 80);
	cin.getline(c2, 80);
	CmpString cm(c1, c2);
	r.Re();
	co.Copy();
	cm.Cmp();
	delete[] c1;
	delete[] c2;
	delete[] c3;
	delete[] c4;
	return 0;
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值