簡體   English   中英

關於比較字符串與字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM