胡恩全10.2作业
1.编程题
#include <iostream>
#include<string.h>using namespace std;class MyString
{
private:char *str;int len;
public://构造函数MyString():str(nullptr),len(0){//无参构造}MyString(char *str):str(new char[strlen(str)+1]),len(strlen(str)){//有参构造int i=0;for(i=0;i<(int)strlen(str);i++){this->str[i]=str[i];}this->str[i]=0;}//拷贝构造MyString(const MyString &s):str(new char[strlen(s.str)+1]),len(s.len){int i=0;for(i=0;i<(int)strlen(s.str);i++){this->str[i]=s.str[i];}str[i]=0;}//拷贝赋值MyString &operator=(const MyString &other){if(this != &other){if(str==nullptr){str=new char[strlen(other.str)+1];}int i=0;for(i=0;i<(int)strlen(other.str);i++){this->str[i]=other.str[i];}str[i]=0;this->len=other.len;}return *this;}//析构函数~MyString(){delete []str;str=nullptr;}//字符串操作 长度就是类中成员len//字符串拼接MyString operator+(const MyString &R) const{MyString temp;temp.str=new char[strlen(str)+strlen(R.str)+1];
// int i=0;
// for(i=0;i<(int)strlen(str);i++)
// {
// temp.str[i]=str[i];
// }
// for(int j=0;j<(int)strlen(R.str);j++)
// {
// temp.str[i]=R.str[j];
// }
// str[i]=0;strcpy(temp.str,str);strcat(temp.str,R.str);temp.len=strlen(temp.str);return temp;}//字符串比较 这里判断的是==bool operator==(const MyString &R) const{if(strcmp(str,R.str)==0){return true;}else{return false;}}//实现对MyString对象的输入输出void inputstr(); //输入void outputstr(); //输出
};
//字符串输入
void MyString::inputstr()
{cout <<"请输入字符串:";char temp[1024]="";cin.getline(temp,1024);
// int i=0;if(str!=nullptr){delete []str;}str=new char[strlen(temp)+1];
// for(i=0;i<(int)strlen(temp);i++)
// {
// str[i]=temp[i];
// }
// str[i]=0;strcpy(str,temp);
}
//字符串输出
void MyString::outputstr()
{cout <<"字符串输出为:";int i=0;while(str[i]){cout << str[i];i++;}cout << endl;
}
int main()
{MyString str1;str1.inputstr();str1.outputstr();MyString str2 = (char *)"hello";str2.outputstr();MyString str3((char *)"aaa");str3.outputstr();if(str2==str3){cout << "str2和str3相同" << endl;}else{cout << "str2和str3不同" << endl;}MyString str4 = str2 + str3;str4.outputstr();return 0;
}
2.答题