cin >> menuChoice;
while (!(cin >> menuChoice))
{
cout << "invalid selection, please enter a number from the menu 1" << endl;
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
我想“抓”的字符串,使程序不崩溃或进入一个连续的循环,使我进入了上述while循环。 看起来不错。 也就是说,直到我进入到0菜单选择 - !的(CIN >> menuChoice)被调用,即使它是有效的输入(我会用另一个循环,以确保它在这个范围内,但只要它是应该被罚款的int , 那正是我所想。
我甚至尝试了
if (menuChoice == 0)
menuchoice = 6;
只是while循环之前,但无济于事。
任何援助?
我期待继续菜单和验证部分分开(目前它的功能,但我会改变他们的未来的类)。
验证部分云:
while (!(cin >> menuChoice))
{
cout << "invalid selection, please enter a number from the menu 1" << endl;
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
while (menuChoice < 1 || menuChoice > 4)
{
cout << "invalid selection, please enter a number from the menu 2" << endl;
cin >> menuChoice; //here is where there is a problem
while (!(cin >> menuChoice))
{
cout << "invalid selection, please enter a number from the menu 3" << endl;
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
}
while循环1 - 捕捉任何初始字符串输入while循环2 - 确保正确的范围内,而环3 - 捕捉任何字符串输入,用户可以输入一个第二时间
原来它只是
cin>> menuChoice;
while (!cin)
{
cout << "invalid selection, please enter a number from the menu 1" << endl;
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
cin>> menuChoice;
}
所需要(以及代码等的其余部分)