4.定义一个字符串类 String,具体要求如下:
- 私有成员数据:
- char * str1,* str2;
- char *str;//str 为 str1 与 str2 之和,如 str1 为 “db a”, str2 为“4 1”,
则 str 为“db a4 1”;“”为“空格”字符)
- 公有成员函数:
- 构造函数:根据给定的两个字符串初始化成员数据 str1 和 str2,由 str1 和 str2 得到 str;
- void dele():删除 str 中的空格字符;
- void sort():对 str 中的字符按升序进行排列;
- void show():输出所有成员数据;
- 析构函数。
- 设计一个完整的程序对该类进行测试。
- 以字符串“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;
}