C++面向对象编程题 第4题

4.定义一个字符串类 String,具体要求如下:
  1. 私有成员数据:
  • char * str1,* str2;
  • char *str;//str 为 str1 与 str2 之和,如 str1 为 “db a”, str2 为“4 1”,
    则 str 为“db a4 1”;“”为“空格”字符)
  1. 公有成员函数:
  • 构造函数:根据给定的两个字符串初始化成员数据 str1 和 str2,由 str1 和 str2 得到 str;
  • void dele():删除 str 中的空格字符;
  • void sort():对 str 中的字符按升序进行排列;
  • void show():输出所有成员数据;
  • 析构函数。
  1. 设计一个完整的程序对该类进行测试。
  • 以字符串“db a”和“4 1”初始化 str1 和 str2;
  • 输出删除空格和排序前的字符串 str1、 str2 和 str;
  • 输出删除空格和排序后的字符串 str1、 str2 和 str。
#include<iostream>
#include<cstring>
using namespace std;
class String{
    char *str1,*str2,*str;
public:
    String(const char *s1,const char *s2){
        str1=new char[strlen(s1)+1];
        str2=new char[strlen(s2)+1];
        str=new char[strlen(s1)+strlen(s2)+1];
        strcpy(str1,s1);
        strcpy(str2,s2);
        strcpy(str,s1);
        strcat(str,s2);
    }
    void del(){
        char *s1=str,*s2=str;
        while(*s1){
            if(*s1!=' '){
                *s2++=*s1;
            }
            s1++;
        }
        *s2='\0';
    }
    void sort(){
        int len=strlen(str);
        for(int i=0;i<len-1;i++){
            for(int j=0;j<len-1-i;j++){
                if(str[j]>str[j+1]){
                    char t=str[j];
                    str[j]=str[j+1];
                    str[j+1]=t;
                }
            }
        }
    }
    void print(){
        cout<<str<<endl;
    }
};
int main(){
    String str("db a","4 1");
    str.print();
    str.del();
    str.sort();
    str.print();
    return 0;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值