Question

J'ai essayé de faire une comparaison caractère par caractère sous le type de chaîne, avec le code suivant:

vector <int> getQuality(string seedTag, vector <string> &MuTag) { 

    vector <int> Quals;  

     for (unsigned i = 0; i<MuTag.size(); i++) { 
         Quals.push_back(-40);
         cout << MuTag[i] << " " << seedTag[i] << endl;

         if (MuTag[i] == seedTag[i]) { // This line 33 with error
           Quals.push_back(40);
         }


     }

     return Quals;
}

Mais pourquoi donne-t-il une telle erreur:

 Mycode.cc:33: error: no match for 'operator==' in '(+ MuTag)->std::vector<_Tp, _Alloc>::operator[] [with _Tp = std::string, _Alloc = std::allocator<std::string>](((long unsigned int)i)) == seedTag. std::basic_string<_CharT, _Traits, _Alloc>::operator[] [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>](((long unsigned int)i)

Comment puis-je le résoudre?

Était-ce utile?

La solution

Vous essayez de comparer une chaîne (MuTag [i]) à un caractère (seedTag [i]).

Autres conseils

Comme l'a dit Alexander, vous comparez une chaîne et un caractère.

Ce qui est triste, c'est que le compilateur vous a déjà dit cela, à la différence qu'il l'a crypté avec le cryptage ISO-STL-TEMPLATE, qui est plus difficile à lire que perl!

Vous pouvez consulter ce script pour déchiffrer les messages d'erreur C ++ STL.

Je sais que beaucoup d'autres personnes ont donné une réponse à la cause de l'erreur de compilation, alors laissez-moi récapituler et proposer une solution:

seedTag est une chaîne qui, par définition, est une collection ordonnée de caractères. MuTag est défini comme un vecteur de chaînes: une collection ordonnée de chaînes.

Quand vous faites votre comparaison:

MuTag[i] == seedTag[i]

comme d'autres personnes l'ont dit, vous ne comparez pas le même type.

Pour résoudre ce problème:

En apparence, vous souhaitez comparer chacune des valeurs de MuTag avec seedTag. Si tel est effectivement le cas, supprimez simplement le [i] dans "seedTag [i]".

vector <string> & MuTag

est une collection de chaînes, tandis que

string seedTag

est une collection de caractères. Donc, dans votre comparaison

MuTag[i] == seedTag[i]

vous comparez réellement quelque chose comme ceci

 "aaaaa" == 'a'

ce qui n’est vraiment pas correct.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top