使用C ++中的运算符重载比较哪个字符串更大

时间:2014-09-18 14:07:53

标签: c++ overloading operator-keyword

我正在尝试使用运算符重载的字符串比较我正在使用>操作员,我没有得到正确的输出,你能告诉我我在这里做的错误是我的代码

#include<iostream.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>


class strclass
{

 public:
 char s1[20];


void getdata()
 {

	cin>>s1;

 }
void showdata()
 {
	cout<<s1;
 }


  int  operator>(strclass obj)
  {
   int temp,temp1;
   temp=strlen(s1);
   temp1=strlen(obj.s1);

   if(temp>temp1)
   {
    return 1;
   }
   else
   return 0;
  }



};

void main()
{

clrscr();
  strclass obj1,obj2;
  int temp3;
  if(obj1>obj2)
  {
   cout<<"string 1 is greater";
  }
  else
  {
   cout<<"string 2 is greater";
  }


  cout<<"enter string 1"<<endl;
  obj1.getdata();
 // obj1.showdata();
  cout<<"enter string 2"<<endl;
   obj2.getdata();
//   obj2.showdata();
   getch();
}

我正在使用基本的库函数。谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 您需要在比较字符串之前放置数据
  2. 运算符应返回int
  3. 对于您的类,使用公共s1成员,您应该为比较运算符使用自由函数,这会增加bool operator<(strclass s1, strclass s2)形式的封装,而不是成员函数