函数不进入for循环

Function doesn't go into for loop

我正在尝试编写自己的函数,它获取 2 个字符串,并判断第一个是否包含第二个作为单词(意思是单词被“”或“,”包围)当我测试时它对于字符串 "squawk, squeal" 和 "squawk",它是 ok,它进入第二个 for 循环(带有 j 的循环)并输出 1,但是对于 "squeal" 它根本不会进入 j 循环。这是我目前的代码:

bool containsMeaning(string bigMeaning, string smallMeaning)

{

unsigned int smallCounter = 0;
unsigned int matchBeginning = 0;
unsigned int matchEnd = 0;
for (unsigned int i = 0; i < bigMeaning.size() - smallMeaning.size() + 1; i++)
{
    cout << "i = " << i << endl;
    smallCounter = 0;
    if (bigMeaning[i] == smallMeaning[0])
    {
        matchBeginning = 0;
        cout << "I'm inside the if " << i << endl;
        for (unsigned int j = i; j < smallMeaning.size(); j++)
        {
            cout << "big char " << bigMeaning[j] << " small char " << smallMeaning[smallCounter] << endl;
            if (bigMeaning[j] != smallMeaning[smallCounter])
            {
                cout << "I want to break free" << j << endl;
                break;
            }
            else
            {
                matchEnd = j;
                smallCounter++;
                cout << "j = " << j << " smallcoutner = " << smallCounter << endl;
            }
        }
        if (smallCounter == smallMeaning.size() &&
           (matchBeginning == 0 || bigMeaning[matchBeginning - 1] == ' ' || bigMeaning[matchBeginning - 1] == ',')
        && (bigMeaning[matchEnd + 1] == '[=10=]' || bigMeaning[matchEnd + 1] == ' ' || bigMeaning[matchEnd + 1] == ','))
            return true;
    }
}
return false;

}

问题出在第二个for循环中的条件上。您在那里所做的事情存在逻辑错误。您设置 j = i 的目的是拥有一个计数器,该计数器将遍历两个字符串,逐个字符地比较它们。但是,第一个 for 循环中的 i 遍历较大的字符串,没有理由让它小于较小字符串的大小,这就是您在 j < smallMeaning.size()命令。

相反,您的 for 循环应该 for (int j = i; j < i + smallMeaning.size(); j++)