为什么array element不同还是会通过if语句?


bool IsFlush(string card[])
{
    int cnt=1;
    for (int i=0;i<5;i++)
    {
        for (int j=0;j<5;j++)
        {
            if (i!=j)
            {
                if (card[i][1]==card[j][1])
                {
                    cnt++;
                    cout<<i<<j<<endl;
                }
    
            }
        }
        if (cnt==5) return true;
        else cnt=1;
        
    }
    return false;
}

输出是这样(上面是array,下面是输出,一旦五个符号相同就return true)

img

下面是扑克几个符号的Unicode,你把它们保存到std::string里是按UTF-8编码保存的,每个符号占三个字节。

SymbolUnicodeUTF-8
U+26600xE2 0x99 0xA0
U+26630xE2 0x99 0xA3
U+26650xE2 0x99 0xA5
U+26660xE2 0x99 0xA6

if (card[i][1]==card[j][1])比较的是字节0xE2

最好完整代码,可以调试一下。光是函数不好判断,也可能是传入参数错误