我的主菜单代码运行不正常。我不明白为什么当用户输入时,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);
}
注意--我没有在这段代码中包含#include,但错误存在于循环重复中。
发布于 2021-01-28 19:55:48
如果您想读取用户的一行输入并对其进行解析以查看其是否有效,那么编写读取一行并对其进行解析的代码。您当前的代码只读取整数。因此,如果有不是整数的输入,它就不会一次又一次地读取并抱怨它。
一个又快又脏的替代方法是读取/忽略一行代码,并在调用cin.clear()
后将其丢弃。
但是我非常相信写出你真正想做的事情的代码。您希望读取用户输入的任何内容,无论它是不是整数。那么,为什么你的代码要读取一个整数呢?
https://stackoverflow.com/questions/65944277
复制相似问题