#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类,重载运算符)
最新推荐文章于 2024-08-03 10:03:09 发布
本文介绍了一个简单的C++字符串类的实现,包括构造函数、赋值运算符重载、输入输出流重载等功能,并实现了两个字符串对象的连接操作。
1万+

被折叠的 条评论
为什么被折叠?



