2009-03-05 20 views
0

Über Vergleich habe ich versucht, Zeichen für Zeichen Vergleich unter String-Typ zu machen, mit dem folgenden Code:String mit String

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 es solche Fehler gibt:

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 lösen?

Antwort

7

Sie versuchen, eine Zeichenfolge (Mutag [i]) mit einem char (seedTag [i]) zu vergleichen.

4

Wie Alexander sagte, Sie vergleichen eine Zeichenfolge und ein Zeichen.

Die traurige Sache ist, dass der Compiler Ihnen bereits gesagt hat, dass es nur in der ISO-STL-TEMPLATE-Verschlüsselung verschlüsselt ist, die schwieriger zu lesen ist, dass Perl!

Sie können C++ STL Fehler bei this script zum Entschlüsseln von Nachrichten suchen.

+0

ein extra +1 für den Humor – HRJ

1
vector <string> & MuTag 

ist eine Sammlung von Saiten, während

string seedTag 

Sammlung von Zeichen ist. So in Ihnen Vergleich

MuTag[i] == seedTag[i] 

Sie tatsächlich so etwas wie diese

"aaaaa" == 'a' 

zu vergleichen, das ist definitiv nicht richtig.

2

Ich weiß, viele andere Leute haben eine Antwort auf das, 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 ist definiert als ein Vektor von Strings: eine geordnete Sammlung von Strings.

Wenn Sie tun, um Ihren Vergleich:

MuTag[i] == seedTag[i] 

wie andere Leute gesagt haben, dass Sie nicht die gleiche Art zu vergleichen.

es zu beheben:

Durch das Aussehen der Dinge wollen, sind Sie jeden der Werte in Mutag mit seedTag vergleichen. Wenn das tatsächlich der Fall ist, dann entferne einfach das [i] in "seedTag [i]".