搜档网
当前位置:搜档网 › exercise12

exercise12

8. 实现一个字符串类String,功能包括:
1。Big Three
2。下标操作符重载
3。输入输出操作符重载
4。==操作符重载
5。+操作符重载
参考Vector类
#include
#include
class String
{
private:
char *p;
int size;
public:
String(int s=0):size(s)
{
if(size<=0)
p=NULL;
else
{
p=new char[size];
for(int i=0;ip[i]=0;
}
}
String(char *a,int s):size(s),p(new char[s])
{
for(int count=0;a[count]!='\0';++count)
p[count]=a[count];
p[count]='\0';
}
String(const String& v)
{
this->size=v.size;
p=new char[size];
for(int i=0;v[i]!='\0';++i)
p[i]=v[i];
}
~String()
{
delete []p;
}
int get_size()const{return size;}
const String& operator=(const String& x)
{
if(this!=&x)
{
delete []p;
this->size=x.size;
p=new char[size];
for(int i=0;x[i]!='\0';i++)
p[i]=x[i];
}
return *this;
}
char& operator[](int index){return p[index];}
const char& operator[](int index)const{return p[index];}
friend istream& operator>>(istream& in,String& x)
{
int i=0;
do
{in>>x[i];}
while(x[i++]!='\0');

return in;
}
friend ostream& operator<<(ostream& out,const String& x)
{
char s=x.size;
for(int i=0;x[i]!='\0';++i)
out<out<return out;
}
const String operator+( String& y)
{
String m;
p=new char[10];
strcpy(p,m.p);
strcat(p,y.p);
//strcpy(m.p,*this.p);
return *this;

}
};
bool operator==(const String& a,const String& b)
{
bool yes=true;
if(a.get_size()!=b.get_size())
yes=false;
else
{
int s,index=0;
s=a.get_size();
while(index++index;
if(indexyes=false;
}
return yes;
}
int main()
{
String vec1;
cout<
char array[20];
String vec2(array, 20);
cin>>vec2;
String vec3(vec2);

cout<//cout<<(vec2+vec3)<if( vec3 == vec2 )
{
cout<<"The vector3 is equal to vector2"<}
String vec4;
vec4 = vec3;
cout<
return 0;
}

相关主题