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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top