C++中的重复循环

Repeating loop in C++

本文关键字:循环 C++      更新时间:2023-10-16

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

编辑

输入变量是一个字符。如果垃圾输入只有一个字符长,那么循环就可以正常工作。如果有任何额外的字符会导致循环被执行多次,然后用户才能再次输入任何内容。

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";
}

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

std::cin.clear();

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

std::cin.ignore(INT_MAX);

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

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

    cin.ignore(20, 'n');