在C ++中重复循环

时间:2012-08-05 00:07:12

标签: c++ loops

下面是C ++中简单菜单的代码。出于某种原因,如果你给它垃圾输入它会做出正确的反应(“请再次尝试你的选择”)。然而,它将再次通过循环再次给出错误消息,然后最终恢复正常运行。

修改

输入变量是char。如果垃圾输入只有一个字符长,则循环按预期工作。如果有任何其他字符导致循环被执行多次,则允许用户再次输入任何内容。

char input = 0;
    while (input != 4)
{
    cout << "1. Circle";
    cout << "\n2. Rectangle";
    cout << "\n3. Triangle";
    cout << "\n4. Quit";
    cout << "\nChoose a shape: ";
    cin >> input;

    switch(input)
    {
    case '1':
        circleFunctions();
        break;
    case '2':
        rectangleFunctions();
        break;
    case '3':           
        triangleFunctions();
        break;
    case '4':
        exit(4);
    default:
        cout << "\nPlease try your selection again...\n";
        input = NULL;
        cin.ignore();
        break;
    }

    cin.ignore();
    cout << "\n";
}

2 个答案:

答案 0 :(得分:1)

您只需在遇到默认情况时清除输入缓冲区,

std::cin.clear();

之后忽略输入流中的所有内容,

std::cin.ignore(INT_MAX);

这应该使cin缓冲区处于良好状态,并且提取运算符(&gt;&gt;)应该正常工作。

答案 1 :(得分:0)

找到答案。将以下参数添加到cin.ignore使其工作:

    cin.ignore(20, '\n');