如何使用开关打破while循环?

时间:2014-02-22 02:44:08

标签: c++

我试图在switch语句中从while循环中断,但它不起作用。我得到一个无限循环。为什么呢?

int main()
{
    int n;
    while (std::cin >> n)
    {
         switch (n)
         {
         case 4:
             break;
             break;
         default:
             std::cout << "Incorrect";
             break;
         }
    }
}

2 个答案:

答案 0 :(得分:4)

你得到一个无限循环因为那不是break的工作方式。第一个break执行后,退出switch语句,第二个break永远不会执行。你必须找到退出外部控制结构的另一种方法。例如,在switch语句中设置一个标志,然后在结尾或循环条件中检查该标志。

while (std::cin >> n)
{
    bool should_continue = true;
    switch (n)
    {
    case 4:
        should_continue = false;
        break;
    default:
        std::cout << "Incorrect";
        break;
    }
    if (!should_continue)
        break;
}

答案 1 :(得分:1)

break内的

switch打破了转换。做类似的事情:

while (std::cin >> n)
{
     if(n == 4)
         break;
     switch (n)
     {
     //...Other case labels
    default:
         std::cout << "Incorrect";
         break;
     }
}