#include<iostream.h>
int cmp(char a[],char b[])
{
int i=0;
while(a[i]==b[i] && a[i]!='\0') i++;
return a[i]-b[i];
}
char* strcpy(char a[],char b[])
{
int i;
for(i=0;b[i];i++) a[i]=b[i];
a[i]='\0';
return a;
}
int strlen(char a[])
{
int i,j=0;
for(i=0;a[i];i++) j++;
return j;
}
char* strcat(char a[],char b[])
{
int i,j=0;
while(a[j]!='\0') j++;
for(i=0;b[i];i++) a[j++]=b[i];
a[j]='\0';
return a;
}
class string
{
private:
char *str;
public:
string(char *s="")
{
str=new char[strlen(s)+1];
strcpy(str,s);
}
string(const string &s)
{
str=new char[strlen(s.str)+1];
strcpy(str,s.str);
}
~string(){delete []str;}
string& operator=(const string &s)
{
if(this!=&s)
{
delete []str;
str=new char[strlen(s.str)+1];
strcpy(str,s.str);
}
return *this;
}
friend string operator+(const string &a,const string &b)
{
char *t=new char[strlen(a.str)+strlen(b.str)+1];
strcpy(t,a.str);
strcat(t,b.str);
return t;
}
friend istream& operator>>(istream& in,string &s)
{
char t[1001];
in>>t;
delete s.str;
s.str = new char[strlen(t)+1];
strcpy(s.str,t);
return in;
}
friend ostream& operator<<(ostream& out,const string &s)
{
return out<<s.str;
}
};
int main()
{
string a="Hello ",b,c;
cin>>b;
c=a+b;
cout<<c<<endl;
string d(c);
cout<<d<<endl;
return 0;
}
C++面试题(自定义string类,重载运算符)
最新推荐文章于 2022-11-04 17:02:47 发布