我正在尝试比较两个字符串数组。每当我进入if语句中的while循环时,我就会陷入无限循环,因为即使我在循环内部有一个迭代器,它也不会增加。我在循环中有cout<< finder;
只是为了查看找到的是什么,它永远不会超过零。如果有人可以提供帮助,我会非常感激。
if (memory[p] == "J")
{
if (is_number(memory[p+1]))
{
worker = atoi(memory[p+1].c_str());
p = worker;
continue;
}
else
{
int finder = 0;
while (memory[p+1] != Symtablelab[finder])
{
cout << finder;
finder = finder + 1;
}
if (memory[p+1] == Symtablelab[finder])
{
int k = Symtablepos[finder];
worker = atoi(memory[k].c_str());
p = worker;
continue;
}
}
}
答案 0 :(得分:2)
你说finder
从不增加到零以上。是否打印取景器= 0?如果是,则意味着
memory[p+1] = Symtablelab[1]
在第一次迭代之后,所以while循环终止,finder
粘在1。
修改强>
如果你说,它会在while语句中连续打印finder = 0
,那么你可能在if (memory[p] == "J")
或for
(循环)语句中有while
。
答案 1 :(得分:1)
如果它是连续打印查找器并且它是0,那么我必须询问您发布的整个代码段是否包含在您未发布的while语句中。如果它是一个陷入无限循环的循环,那么你发布的语句中包含的while循环将不会递增finder,这完全没有意义。
或者另一种可能性是Symtablelab覆盖了'['']'运算符。如果这些事情都不属实,那就会发生令人难以置信的事情。