2014-09-18 2 views
0

J'essaie la comparaison de chaîne en utilisant la surcharge de l'opérateur J'utilise> opérateur, je ne reçois pas la sortie correcte, pouvez-vous me dire quelle erreur je fais ici est mon codeComparer quelle chaîne est plus grande en utilisant la surcharge de l'opérateur en C++

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

 

 
class strclass 
 
{ 
 

 
public: 
 
char s1[20]; 
 

 

 
void getdata() 
 
{ 
 

 
\t cin>>s1; 
 

 
} 
 
void showdata() 
 
{ 
 
\t 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(); 
 
}

J'utilise les fonctions de base de la bibliothèque. Merci!

+0

Pourquoi est-ce marqué C++ _ CLI? C'est le C++ de Microsoft avec les extensions .Net et nulle part dans ce code je ne vois que vous l'utilisez. Vous devriez également utiliser 'std :: string' pour les chaînes à la place des tableaux de caractères de style C et des fonctions de la bibliothèque C. – crashmstr

+0

De plus, 'operator>' devrait retourner 'bool', pas' int'. – crashmstr

+0

Je n'étais pas au courant de l'étiquette éditée merci –

Répondre

0
  1. Vous devez mettre les données avant de comparer les chaînes
  2. L'opérateur doit retourner un entier
  3. Pour votre classe, avec un membre de s1 public, vous devez utiliser une fonction libre pour l'opérateur de comparaison, qui augmente l'encapsulation, de la forme bool operator<(strclass s1, strclass s2) au lieu d'une fonction membre
+0

je suis débutant à C++ me diriez-vous l'exemple de l'opérateur devrait retourner int je ne le comprends pas –

+0

au lieu de comparer les objets dans si condition devrais-je utiliser la fonction strcmp? –

+0

Sangram Barge, vous devez appeler getData avant que la comparaison ne se produise, et vous devez retourner un booléen de l'opérateur, pas un int, vrai ou faux au lieu de 1 ou 0. –

Questions connexes