//字符串的初始化、串的复制和赋值、串的输入和输出、串的比较运算、串的连接运算等功能。
#include<iostream.h>
#include<string>
class String
{public:
String(){a=NULL;}
String(char *str1);
void display();
 friend bool operator>(String &string1,String &string2);
  friend bool operator<(String &string1,String &string2);
   friend bool operator==(String &string1,String &string2);
private:
char *a;
} ;void String::display()
{cout<<a;
}
String::String(char *str1)
{
a=str1;
}bool operator>(String &string1,String &string2)
{if (strcmp(string1.a ,string2.a)>0)
return true;
else return false;
} bool operator<(String &string1,String &string2)
{if (strcmp(string1.a ,string2.a)<0)
return true;
else return false;
}
bool operator==(String &string1,String &string2)
{if (strcmp(string1.a ,string2.a)==0)
return true;
else return false;
}
void main()
{char *p1,*p2;
int n1,n2;
cout<<"请输入两字符串的长度";
cin>>n1>>n2;
cout<<endl<<"请输入";
char a1[100],a2[100];
for(int i=0;i<n1;i++)
{cin>>a1[i];}
p1=a1;
String string1(p1);
for(int j=0;j<n2;j++)
{cin>>a2[j];}
p2=a2;
String string2(p2);
cout<<"string1>string2为"<<(string1>string2)<<endl;
cout<<"string1<string2为"<<(string1<string2)<<endl;
cout<<"string1=string2为"<<(string1==string2)<<endl;}
这段程序我是想实现字符串的初始化以及输入和比较,不管我怎么运行都是错
谁能按要求给个思路啊!!!还有如何实现重载等号来实现字符串的复制????我头都大了

解决方案 »

  1.   

    char a1[100] = {0};
    char a2[100] = {0};再试试
      

  2.   

    你出现的是什么错误啊? 还有,
    1.我觉得你的这个 有参构造函数 这样写是有问题的,
     String::String(char *str1)
    {
    a=str1;
    }
    你直接将 字符串 str1 的地址给了 a ,那么a只向的就是 字符串 str1 的地址,也就是说 a 和str1是同一地址空间,这样很容易出错的,假如某一天你把str1给delete了,你再用a的话会报错的。
    我觉得 给a再重新开辟一段空间,然后复制str1字符串,这样更好
     int len = strlen(str1);
    a = new char[len];
    strcat(a,str1);还有
    2.
    for(int i=0;i<n1;i++)
    {
        cin>>a1[i];
    }
    这样输入以后,必须 在最后加 a1[i]='\0';3.
    字符串的复制可以利用现成的函数:
    strcat(a,b);  不懂的话,去看看msdn