首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当用户输入错误字符时,我的do while循环将永远重复

当用户输入错误字符时,我的do while循环将永远重复
EN

Stack Overflow用户
提问于 2021-01-29 03:52:58
回答 1查看 47关注 0票数 0

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

代码语言:javascript
运行
复制
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);

}

注意--我没有在这段代码中包含#include,但错误存在于循环重复中。

EN

回答 1

Stack Overflow用户

发布于 2021-01-29 03:55:48

如果您想读取用户的一行输入并对其进行解析以查看其是否有效,那么编写读取一行并对其进行解析的代码。您当前的代码只读取整数。因此,如果有不是整数的输入,它就不会一次又一次地读取并抱怨它。

一个又快又脏的替代方法是读取/忽略一行代码,并在调用cin.clear()后将其丢弃。

但是我非常相信写出你真正想做的事情的代码。您希望读取用户输入的任何内容,无论它是不是整数。那么,为什么你的代码要读取一个整数呢?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65944277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档