[英]About Comparing String With 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;
}
但是為什么它會給出這樣的錯誤:
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)
我該如何解決?
您正在嘗試將字符串 (MuTag[i]) 與字符 (seedTag[i]) 進行比較。
正如亞歷山大所說,您正在比較一個字符串和一個字符。
可悲的是,編譯器已經告訴你了,只是它用 ISO-STL-TEMPLATE 加密對其進行了加密,perl 更難閱讀!
您可能希望查看此腳本以解密 C++ STL 錯誤消息。
我知道很多其他人已經對導致編譯錯誤的原因做出了回應,所以讓我回顧一下,然后提出一個解決方案:
seedTag 是一個字符串,根據定義,它是一個有序的字符集合。 MuTag 被定義為字符串向量:字符串的有序集合。
當您進行比較時:
MuTag[i] == seedTag[i]
正如其他人所說,您不是在比較同一類型。
要解決這個問題:
從表面上看,您希望將 MuTag 中的每個值與 seedTag 進行比較。 如果確實如此,只需去掉“seedTag[i]”中的[i]。
vector <string> & MuTag
是字符串的集合,而
string seedTag
是字符的集合。 所以在你比較
MuTag[i] == seedTag[i]
你實際上比較像這樣的東西
"aaaaa" == 'a'
這絕對是不正確的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.