跳过整个循环而不运行while

时间:2019-09-06 13:31:48

标签: c++ if-statement while-loop

我有一个while循环,我想跳过整个循环,而不必再次在括号中运行条件,因为像你现在这样,向量的大小比其单元格数大一个。我的意思是:

[ Cell 0 ][ Cell 1 ][ Cell 2] --> Size = 3

因此,我必须跳过整个循环以防止发生错误。我需要编写一些使程序从A点移到B点而无需运行“ while()”我的循环的东西:

    size = 0;
    while ((usernamelog[size] != usrlog || passwordlog[size] != passlog) && size < usernamelog.size())//Checking Username And Password
    {
        if (x == 2)//Login Unsuccessfull
           cout << "Username or Password is Incorrect. Please try again." << endl;
        cout << "Enter Your Username: ";
        cin >> usrlog;
        cout << "Enter Your Password: ";
        cin >> passlog;
        x = 2;
        size++;
        if (usernamelog.size() == size)
           //Point A
    }

    //Point B

例如,当usernamelog.size为2且大小为2时,从A跳到B

1 个答案:

答案 0 :(得分:2)

您正在寻找break

  

在此语句之后,控制权会在封闭循环或开关之后立即转移到该语句。与任何块出口一样,在执行封闭循环之后的第一行之前,按相反的构造顺序破坏在封闭复合语句或循环/开关条件下声明的所有自动存储对象。

示例:

while (true) { 
    std::cout << "this loop runs only once";
    break;
} 

当您有嵌套循环时,有时会出现“问题”,因此即使在当前与您的代码无关的情况下,我也会在此处添加它。请注意,break仅跳出最内部的循环。一旦有了更多的循环,您将需要多个break。例如,它将一直运行到无穷大:

while (true) {
    while (true) {
        break;
    }
}

一个简单的解决方案是将循环放入函数内并移至return

void foo() {
    while (true) {
        while (true) {
            std::cout << "this will be printed only once";
            return;
        }
    }
}

请注意,您也可以在单个循环中执行此操作,通常这是更简洁的方法。

PS:如果您确实知道迭代次数,那么使用for循环来代替是更容易实现的。还应考虑解决您的状况,以免您从体内跳出循环。