Informazioni sul confronto tra stringhe e stringhe
-
03-07-2019 - |
Domanda
Ho provato a creare un confronto tra caratteri per tipo di stringa, con il seguente codice:
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;
}
Ma perché dà questo errore:
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)
Come posso risolverlo?
Soluzione
Stai provando a confrontare una stringa (MuTag [i]) con un carattere (seedTag [i]).
Altri suggerimenti
Come ha detto Alexander, stai confrontando una stringa e un carattere.
La cosa triste è che il compilatore ti ha già detto che, solo lo ha crittografato nella crittografia ISO-STL-TEMPLATE, che è più difficile da leggere perl!
Potresti voler guardare questo script per decifrare i messaggi di errore C ++ STL.
So che molte altre persone hanno dato una risposta a ciò che sta causando l'errore di compilazione, quindi fammi ricapitolare e quindi proporre una soluzione:
seedTag è una stringa, che per definizione è una raccolta ordinata di caratteri. MuTag è definito come un vettore di stringhe: una raccolta ordinata di stringhe.
Quando fai il tuo confronto:
MuTag[i] == seedTag[i]
come altri hanno già detto, non stai confrontando lo stesso tipo.
Per risolverlo:
Dall'aspetto delle cose, vuoi confrontare ciascuno dei valori in MuTag con seedTag. In tal caso, è sufficiente eliminare [i] in " seedTag [i] " ;.
vector <string> & MuTag
è una raccolta di stringhe, mentre
string seedTag
è una raccolta di caratteri. Quindi nel tuo confronto
MuTag[i] == seedTag[i]
stai effettivamente confrontando qualcosa del genere
"aaaaa" == 'a'
che sicuramente non è corretto.