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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top