C ++两个字符串彼此不相等

时间:2016-10-25 05:26:55

标签: c++ string

Code next to console

我有两个字符串,一个是传入的,另一个是指向地图中字符串的指针。我似乎无法弄清楚为什么他们没有触发IF声明。我打印出每个的值来调试。 我也尝试了字符串比较运算符,似乎没有更好的工作。这超出了我的C ++知识范围。

我认为“Baaaang”应该在控制台中发布,因为两个值相等。然而,这似乎只是选择性地发布“Baaang”。

int isMapped(map<string,int> &givenSymbols, string s) // checks to see if the given string is already in the map
{
for (map<string,int>::iterator it=givenSymbols.begin(); it!=givenSymbols.end(); ++it)
{
    cout<<"S="<<s<<endl;
    cout<<"it="<<it->first<<endl;
    if(s == (it->first))
    {
        cout<<"Baaaaanng"<<s<<endl;
        return 1;
    }           
}
return 0;
}

1 个答案:

答案 0 :(得分:0)

答案是你的字符串包含一些其他字符。以下是此代码应该有效的证据:

#include <map>
#include <iostream>
#include <string>
using namespace std;
int isMapped(map<string,int> &givenSymbols, string s)
{
    for (map<string,int>::iterator it=givenSymbols.begin(); it!=givenSymbols.end(); ++it)
    {
        cout<<"S="<<s<<endl;
        cout<<"it="<<it->first<<endl;
        if(s == (it->first))
        {
            cout<<"Baaaaanng"<<s<<endl;
            return 1;
        }
    }
    return 0;
}



int main()
{
    map<string, int> map1;
    map1.insert(std::make_pair("Rdf0", 1));
    map1.insert(std::make_pair("R0", 2));
    isMapped(map1, std::string("R0"));
    return 0;
}

打印:

S=R0
it=R0
BaaaaanngR0