循环内的迭代器不会递增

时间:2012-09-17 04:45:58

标签: c++ loops while-loop

我正在尝试比较两个字符串数组。每当我进入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;
            }
        }
    }

2 个答案:

答案 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覆盖了'['']'运算符。如果这些事情都不属实,那就会发生令人难以置信的事情。