C++类实现字符串除去空格和排序

来源:互联网 发布:dombera音乐软件 编辑:程序博客网 时间:2024/05/16 07:11
/*定义一个字符串类 String,具体要求如下: (1) 私有成员数据:    char * str1,* str2;    char *str;      //str 为 str1 与 str2 之和,如 str1 为 “db  a”, str2 为“4  1”,                        则 str 为“db a4 1”;(“  ”为“空格”字符) (2) 公有成员函数:    构造函数:根据给定的两个字符串初始化成员数据 str1 和 str2,由 str1 和 str2 得到 str;    void dele( ):删除 str 中的空格字符;    void sort( ):对 str 中的字符按升序进行排列;    void show( ):输出所有成员数据;    析构函数。 (3) 设计一个完整的程序对该类进行测试。    以字符串“db a”和“4  1”初始化 str1 和 str2;    输出删除空格和排序前的字符串 str1、str2 和 str; 输出删除空格和排序后的字符串 str1、str2 和 str。*/#include<iostream>#include<string>using namespace std;class String{private:    char *str1=new char, *str2=new char;    char *str= new char;public:    String(char *ptr1,char *ptr2);    void dele();    void sort();    void show();    ~String();};String::String(char *ptr1, char *ptr2){    //初始赋值    str1 = ptr1;    str2 = ptr2;    //串接字符串    char *ptr=str;    while (*str1)    {        *ptr = *str1;        ptr++;        str1++;    }    while (*str2)    {        *ptr = *str2;        ptr++;        str2++;    }    *ptr = '\0';}void String::dele(){    char *ptr=str;    while (*ptr)    {        if (*ptr == ' ')        {            char *p = ptr;            while (*p)            {                *p = *(p + 1);                p++;            }        }        ptr++;    }}void String::sort(){    for (int i = 0; i < strlen(str) - 1; i++)    {        for (int j = 0; j < strlen(str) - i - 1; j++)        {            if (*(str + j) > *(str + j + 1))            {                char *temp;                temp = new char;                *temp = *(str + j);                *(str + j) = *(str + j + 1);                *(str + j + 1) = *temp;                delete temp;            }        }    }}void String::show(){    cout << str << endl;}String::~String(){    delete str1, str2, str;}int main(){    char a[] = "db a", b[] = "4 1";    String str(a,b);    str.dele();    str.sort();    str.show();    system("pause");    return 0;}
原创粉丝点击