2009-03-05 3 views
0

으로 문자열 비교에 대해 나는 다음과 같은 코드로, 문자열 유형에 따라 을 문자 비교하여 문자를 만들려고 :문자열

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) 

을 어떻게 할 수 그것을 해결할 수 있습니까?

답변

7

문자열 (MuTag [i])과 char (seedTag [i])을 비교하려고합니다.

4

Alexander가 말했듯이, 당신은 문자열과 char을 비교하고 있습니다.

슬픈 사실은 컴파일러가 이미 ISO-STL-TEMPLATE 암호화로 암호화했기 때문입니다.이 암호화는 그 perl을 읽는 것이 더 어렵습니다!

this script에서 C++ STL 오류 메시지를 해독 할 수 있습니다.

string seedTag 

문자가 모음 인 반면

+0

유머러스러스 한 +1 – HRJ

1
vector <string> & MuTag 

은 스트링의 컬렉션이다. 실제로이

"aaaaa" == 'a' 

같은 것을 비교하면 비교

MuTag[i] == seedTag[i] 

에 그래서 확실히 정확하지 않다.

2

나는 다른 많은 사람들이 컴파일 오류의 원인이 무엇인지에 대한 응답을 준 알고, 그래서 나에게 요점을 되풀이하자 다음 솔루션 제안 :

seedTag가 정의 문자의 정렬 된 모음입니다 문자열입니다 . MuTag는 문자열의 벡터, 정렬 된 문자열 모음으로 정의됩니다.

당신이 당신의 비교를 수행 할 때 다른 사람이 말했다

MuTag[i] == seedTag[i] 

로, 동일한 유형을 비교하지 않을입니다.

그것을 해결하려면 : 사물의 모양으로

, 당신은 seedTag와 MuTag에 각각의 값을 비교하고자하고 있습니다. 이것이 사실이라면 "seedTag [i]"에서 [i]를 제거하십시오.