关于比较字符串与字符串
Posted
技术标签:
【中文标题】关于比较字符串与字符串【英文标题】:About Comparing String With String 【发布时间】:2009-03-05 06:51:08 【问题描述】:我尝试在字符串类型下逐个字符进行比较, 使用以下代码:
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)
我该如何解决?
【问题讨论】:
【参考方案1】:您正在尝试将字符串 (MuTag[i]) 与字符 (seedTag[i]) 进行比较。
【讨论】:
【参考方案2】:正如亚历山大所说,您正在比较一个字符串和一个字符。
可悲的是编译器已经告诉你了,只是它用 ISO-STL-TEMPLATE 加密来加密,perl 更难阅读!
您可能希望查看this script 以解密 C++ STL 错误消息。
【讨论】:
【参考方案3】:我知道很多其他人已经对导致编译错误的原因做出了回应,所以让我回顾一下然后提出解决方案:
seedTag 是一个字符串,根据定义,它是一个有序的字符集合。 MuTag 被定义为一个字符串向量:一个有序的字符串集合。
当您进行比较时:
MuTag[i] == seedTag[i]
正如其他人所说,您不是在比较同一类型。
修复它:
从表面上看,您希望将 MuTag 中的每个值与 seedTag 进行比较。如果确实如此,只需去掉 "seedTag[i]" 中的 [i]。
【讨论】:
【参考方案4】:vector <string> & MuTag
是字符串的集合,而
string seedTag
是字符的集合。所以在你的比较中
MuTag[i] == seedTag[i]
你实际上是在比较这样的东西
"aaaaa" == 'a'
这绝对是不正确的。
【讨论】:
以上是关于关于比较字符串与字符串的主要内容,如果未能解决你的问题,请参考以下文章