Über Vergleich String mit String
-
03-07-2019 - |
Frage
Ich habe versucht, Zeichen für Zeichen Vergleich unter String-Typ zu machen, mit dem folgenden Code:
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;
}
Aber warum gibt es solche Fehler:
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)
Wie kann ich es beheben?
Lösung
Sie versuchen, eine Zeichenfolge (Mutag [i]) mit einem char (seedTag [i]) zu vergleichen.
Andere Tipps
Wie Alexander sagte, Sie vergleichen eine Zeichenfolge und ein Zeichen.
Das Traurige daran ist, dass der Compiler Ihnen schon gesagt, dass es nur in ISO-STL-TEMPLATE-Verschlüsselung verschlüsselt, was schwieriger ist, dass Perl zu lesen!
Sie können unter dieses Skript zum Entschlüsseln C ++ STL Fehlermeldungen .
Ich weiß, viele andere Leute eine Antwort gegeben haben, was die Übersetzungsfehler verursacht, so lassen Sie mich rekapitulieren und dann eine Lösung vorschlagen:
seedTag ist eine Zeichenfolge, die per Definition ist eine geordnete Sammlung von Zeichen. Mutag wird als Vektor von Strings definiert. Eine geordnete Sammlung von Zeichenketten
Wenn Sie tun, um Ihren Vergleich:
MuTag[i] == seedTag[i]
als andere Leute gesagt haben, dass Sie nicht die gleiche Art zu vergleichen.
um es zu beheben:
Durch das Aussehen der Dinge, Sie wollen jeden des Wertes in Mutag mit seedTag vergleichen. Wenn dies tatsächlich der Fall ist, erhalten nur loswerden der [i] in "seedTag [i]".
vector <string> & MuTag
ist eine Sammlung von Saiten, während
string seedTag
ist eine Sammlung von Zeichen. Also Sie Vergleich
MuTag[i] == seedTag[i]
Sie tatsächlich so etwas wie diese zu vergleichen
"aaaaa" == 'a'
das ist definitiv nicht korrekt ist.