【问题标题】:My do while loop repeats forever when the user inputs a wrong character [duplicate]当用户输入错误的字符时,我的 do while 循环会永远重复[重复]
【发布时间】:2021-01-28 19:52:58
【问题描述】:

我的主菜单代码运行不正常。我不知道为什么当用户输入时 do while 循环会永远重复,bool 设置为 true,并且它可以工作,但是如果用户输入了错误的字符,循环会永远继续。并显示“无效字符。请重试。”并且不允许用户输入。

void mainmenu() {
bool wrong = false;
    system("cls");

    cout << "Hello! Welcome to the menu. ";
    cout << "\n\n";
    cout << "What would you like to do?\n";
    cout << "Options:\n";
    cout << "1. Password generator\n";
    int choice{ 0 };
    do {

        cin >> choice;


        if (choice == 1) {
            wrong = true;
            passgen();
            break;
        }

        else {
            cout << "Invalid character. Please try again." << endl;
            cin.clear();
        }
        
    } while (!wrong);
    
    

}

注意-我没有在这个sn-p代码中包含#include,但错误在循环重复内。

【问题讨论】:

  • 什么会阻止您的while 循环,如果用户输入无效的内容,您会更新它吗?

标签: c++ loops while-loop


【解决方案1】:

如果您想从用户那里读取一行输入并解析它以查看它是否有效,那么编写读取一行并解析它的代码。您当前的代码仅读取整数。因此,如果输入不是整数,它永远不会读取它并一遍又一遍地抱怨它。

一种快速而肮脏的替代方法是读取/忽略一行并在调用 cin.clear() 后将其丢弃。

但我坚信编写代码可以实现您真正想做的事情。您想读取用户输入的任何内容,无论它是否为整数。那么为什么你的代码会读取一个整数呢?

【讨论】:

    猜你喜欢
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多