О сравнении строки со строкой - PullRequest
0 голосов
/ 05 марта 2009

Я пытался сделать посимвольное сравнение под строковым типом, со следующим кодом:

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;
}

Но почему это дает такую ​​ошибку:

 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)

Как я могу решить это?

Ответы [ 4 ]

7 голосов
/ 05 марта 2009

Вы пытаетесь сравнить строку (MuTag [i]) с символом (seedTag [i]).

4 голосов
/ 05 марта 2009

Как сказал Александр, вы сравниваете строку и символ.

Грустно то, что компилятор уже сказал вам, что только он зашифровал его с помощью шифрования ISO-STL-TEMPLATE, который сложнее прочитать на этом perl!

Возможно, вы захотите посмотреть этот скрипт для расшифровки сообщений об ошибках C ++ STL.

2 голосов
/ 05 марта 2009

Я знаю, что многие другие люди ответили, что является причиной ошибки компиляции, поэтому позвольте мне повторить и предложить решение:

seedTag - это строка, которая по определению является упорядоченной коллекцией символов. MuTag определяется как вектор строк: упорядоченный набор строк.

Когда вы делаете сравнение:

MuTag[i] == seedTag[i]

как говорили другие люди, вы не сравниваете тот же тип.

Чтобы исправить это:

Судя по всему, вы хотите сравнить каждое из значений в MuTag с seedTag. Если это действительно так, просто избавьтесь от [i] в ​​"seedTag [i]".

1 голос
/ 05 марта 2009
vector <string> & MuTag

- это набор строк, а

string seedTag

это коллекция символов. Так в тебе сравнение

MuTag[i] == seedTag[i]

вы на самом деле сравниваете что-то вроде этого

 "aaaaa" == 'a'

что определенно не правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...