vc++相关程序问题

vc++相关问题以及源代码……定义字符串类String……
谢谢了……

img

img

如下:

#include <iostream>
using namespace std;

class String
{
private:
    char* str1;
    char* str2;
    char* str; //str为str1和str2之和
public:
    String(const char* p1,const char* p2)
    {
        int len1 = 0, len2 = 0;
        int i = 0;
        //计算长度
        while (p1[len1] != '\0')
            len1++;
        while (p2[len2] != '\0')
            len2++;
        //申请内存空间
        str1 = new char[len1 + 1];
        str2 = new char[len2 + 1];
        str = new char[len1 + len2 + 1];
        while (p1[i] != '\0')
        {
            str1[i] = p1[i];
            str[i] = p1[i];
            i++;
        }
        str1[i] = 0; //结尾
        while (p2[i - len1] != '\0')
        {
            str2[i - len1] = p2[i - len1];
            str[i] = p2[i - len1];
            i++;
        }
        str2[i - len1] = 0;
        str[i] = 0;
    }

    void dele()//删除str中的空格字符
    {
        int i = 0, j = 0;
        while (str[i] != '\0')
        {
            if(str[i] !=' ')
                str[j++] = str[i];
            i++;
        }
        str[j] = '\0';
    }
    
    void sort() //升序排序
    {
        int i, j, temp;
        for (i = 1; str[i] != '\0'; i++)
        {
            if (str[i] < str[i - 1])
            {
                temp = str[i];
                for (j = i - 1; j >= 0; j--)
                {
                    if (str[j] > temp)
                        str[j + 1] = str[j];
                    else
                        break;
                }
                str[j + 1] = temp;
            }
        }
    }

    void show() //输出所有成员
    {
        cout << "str1=" << str1 << endl;
        cout << "str2=" << str2 << endl;
        cout << "str=" << str << endl;
    }
};


int main()
{
    const char* p1 = "db a";
    const char* p2 = "4  1";
    String s(p1, p2);
    cout << "删除空格和排序后的字符串:" << endl;
    s.show(); //
    s.dele();
    s.sort(); 
    cout << "删除空格和排序后的字符串:" << endl;
    s.show();
    return 0;
}


string delete(string str)) {
    int index = 0;
    if (!str.empty()) {
        //string::npos 表示查找没有匹配
        while((index = str.find(' ', index)) != string::npos) {
            str.erase(index, 1);
        }
    }
    return str;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632