函数不进入 for 循环
Function doesn't go into for loop
我正在尝试编写我自己的函数,它获得2个字符串,并说明如果第一个字符串包含第二个字符串作为单词(意思是单词被"或"包围)。当我测试字符串"squawk,squawk"answers"squawke"时,它是ok
,它进入第二个for循环(带有j
的循环)并输出1,但对于"squaw",它根本不会进入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] == ' ' || bigMeaning[matchEnd + 1] == ' ' || bigMeaning[matchEnd + 1] == ','))
return true;
}
}
return false;
}
问题在于第二个for
循环中的条件。你在那里做的事情有一个逻辑错误。您设置j = i
的目的是有一个计数器,它将在两个字符串上迭代,逐字符比较它们。但是,第一个for循环中的i
会迭代较大的字符串,并且没有理由小于较小字符串的大小,这就是您在j < smallMeaning.size()
命令中的第二个for循环所假设的大小。
相反,您的for
循环应该是for (int j = i; j < i + smallMeaning.size(); j++)
。
相关文章:
- 如何在C++中从两个单独的for循环中添加两个数组
- 为什么我的for循环不能正确获取argv
- 在基于范围的for循环中使用结构化绑定声明
- 通过for循环使用用户输入填充列表
- 使用for循环检查数组中的重复项
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 正在使用for循环创建QScatterSerie
- Python中的for循环与C++有何不同
- 在更改for循环的第三部分后,未使用for循环结果
- 在 for 循环中查找问题时遇到困难
- 嵌套for循环C++的问题(初学者)
- 如何用for循环在c++中生成单词三角形
- 如何在for循环中包含两个索引值的测试条件
- 带有多个独立参数的C++For循环
- 为什么我的程序在for循环中k=0时返回垃圾值
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- C++-For循环未执行
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- C++ 无法在字符数组中使用 for 循环打印字母模式