J'essaie d'obtenir la quantité d'occurrences dans un fichier de chaque mot dans un fichier séparé. Le code suivant doit produire le nombre d'occurrences de chaque mot dans sl en utilisant les mots de fl mais à la place, il sort pour chaque mot même s'il y a plusieurs instances. J'essaie de comprendre ce que le problème est et pourrait faire avec de l'aide. La fonction getNextWord() renvoie simplement le mot suivant dans le fichier.Comparaison de chaînes (C++)
while(fl.isWord()){
int total = 0;
string temp1= fl.getNextWord();
while(sl.isWord()){
string temp2 = sl.getNextWord();
if(temp1.compare(temp2)!=0) total ++;
//if(temp1 == temp2) total++;
}
cout << temp1 << " " << total << endl;
}
La fonction isWords() est dans une classe séparée:
bool ReadWords::isWord(){
if(file.good())
return !eoffound;
else
return eoffound;
listes Exemplar:
contenu fl vaches kfc
sl contenu: vaches foutues vaches pommes de poulet pommes kfc aliments gras vaches
sortie:
kfc 0
vaches 0
sortie doit être:
kfc 1
vaches 3
edi ted partie:
string ReadWords::getNextWord(){
file >> theWord;
return theWord;
}
quel est le problème avec 'if (temp1 == temp2) total ++;' –
@BhawinParkeria Je viens de le commenter car il produit le même résultat. compare() ou == produira le même résultat mais le problème est ailleurs: p – NewToCoding
pourquoi ne pas utiliser .find() member function de la chaîne? C'est plus facile et cela produira le résultat que vous voulez. Parcourez l'autre en utilisant la méthode .find() pour chaque mot de la chaîne. http://www.cplusplus.com/reference/string/string/find/ – KostasRim