2009-03-05 7 views
0

J'ai essayé de caractère par comparaison des caractères dans le type de chaîne, avec le code suivant:sur la comparaison chaîne avec chaîne

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 il donne 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 Résolvez le?

Répondre

7

Vous essayez de comparer une chaîne (Mutag [i]) avec un char (seedTag [i]).

4

Comme Alexander dit, vous comparez une chaîne et char.

Le plus triste est que le compilateur vous a déjà dit que, seulement il l'a crypté dans le cryptage ISO-STL-TEMPLATE, ce qui est plus difficile à lire que perl!

Vous voudrez peut-être regarder this script C++ pour déchiffrer les messages d'erreur STL.

+0

un +1 supplémentaire pour l'humour – HRJ

1
vector <string> & MuTag 

est une collection de chaînes, tandis que

string seedTag 

est une collection de caractères. Donc, vous comparaison

MuTag[i] == seedTag[i] 

vous comparer en fait quelque chose comme ça

"aaaaa" == 'a' 

qui est certainement pas correct.

2

Je sais que beaucoup d'autres personnes ont donné une réponse à ce qui provoque l'erreur de compilation, alors laissez-moi récapituler et propose 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] 

que d'autres personnes ont dit, vous n'êtes pas la comparaison du même type.

Pour résoudre ce problème:

par les regards des choses, vous êtes désireux de comparer chacune des valeurs en Mutag avec seedTag. Si c'est effectivement le cas, supprimez simplement le [i] dans "seedTag [i]".