Jasonbelic 2022-05-31 08:49 采纳率: 100%
浏览 38
已结题

有关字符串的C++问题,如何正确求解

试定义CString和CString的子类CString2(可对CString声明做少量调整),CString,CString2声明如下:

class CString
{
 char *str;    //字符串
public:
 CString();    //构造函数
 CString(const char s[]);  //构造函数
 CString(CString&t);  //拷贝构造函数
 ~CString();
 int Set(const char s[]);  //
 void Print();   //输出
};

class CString2 :public CString
{
public:
 CString2();    //构造函数
 CString2(const char s[]);  //构造函数
 CString2(CString2& t);  //拷贝构造函数
 CString2 &Cat(CString2&t);   //字符串连接
 int Cmp(CString2& t);        //字符串比较
};

在如下主函数中对该类进行测试。

int main() {
 char s0[100], s1[100];
 cin >> s0 >> s1;
 CString2 cs0(s0),cs1(cs0);
 cs0.Set(s1);
 cout << cs0.Cmp(cs1) << endl;
 CString2 &t=cs0.Cat(cs1);
 t.Print();
 return 0;
}

输入输出示意如下:
ASDF BSDF
1
BSDFASDF
请在答题窗口录入编写的完整程序。

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-05-31 10:51
    关注
    
    #pragma warning(disable:4996) //开头加这句或项目、属性、配置属性、C/C++、预处理器、预处理器定义中添加“_CRT_SECURE_NO_WARNINGS”
    #include <iostream>
    #include <string.h>
    using namespace std;
    class CString {
    public:
        char *str;                 //字符串
    public:
        CString();                 //构造函数
        CString(const char s[]);   //构造函数
        CString(CString& t);       //拷贝构造函数
        ~CString();
        int Set(const char s[]);   //
        void Print();              //输出
    };
    class CString2 :public CString {
    public:
        CString2();                //构造函数
        CString2(const char s[]);  //构造函数
        CString2(CString2& t);     //拷贝构造函数
        CString2& Cat(CString2& t);//字符串连接
        int Cmp(CString2& t);      //字符串比较
    };
    CString::CString() {
        str=NULL;
    }
    CString::CString(const char s[]) {
        str=(char *)s;
    }
    CString::CString(CString& t) {
        str=t.str;
    }
    CString::~CString() {
        str=NULL;
    }
    int CString::Set(const char s[]) {
        str=(char *)s;
        return 0;
    }
    void CString::Print() {
        cout << str;
    }
    CString2::CString2() {
        str=NULL;
    }
    CString2::CString2(const char s[]) {
        str=(char *)s;
    }
    CString2::CString2(CString2& t) {
        str=(char *)(t.str);
    }
    CString2& CString2::Cat(CString2& t) {
        str=strcat(str,t.str);
        return *this;
    }
    int CString2::Cmp(CString2& t) {
        int r=strcmp(str,t.str);
        if (r!=0) r=1;
        return r;
    }
    int main() {
        char s0[100], s1[100];
        cin >> s0 >> s1;
        CString2 cs0(s0),cs1(cs0);
        cs0.Set(s1);
        cout << cs0.Cmp(cs1) << endl;
        CString2 &t=cs0.Cat(cs1);
        t.Print();
        return 0;
    }
    //输入
    //ASDF BSDF
    //输出
    //1
    //BSDFASDF
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月8日
  • 已采纳回答 5月31日
  • 创建了问题 5月31日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测