我尝试在字符串类型下进行字符比较, 使用以下代码:

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])与char(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归因
不隶属于 StackOverflow
scroll top