执行时获取线等于"/n",具有输入验证



我正在做一个学校项目,它是一个收银机。我在输入验证方面遇到了问题,我有一个do while循环,其中用户需要输入任何字符1到6,或者按enter键退出循环,使用getline(cin,choice(输入字符。我在验证输入时遇到问题,同时仍然允许"\n"退出循环,这是我现在的代码

do {
cout << "Please enter the number of the item then press enter, press enter to to confirm your order ";




getline(cin, choice);
while (choice.length() > 1 || choice[0] != '1' && choice[0] != '2' && choice[0] != '3' && choice[0] != '4' && choice[0] != '5' && choice[0] != '6' && choice[0] != 'n') {
cout << "Invalid Input: please try againn";

getline(cin, choice);
}




switch (choice[0])
{
case '1': Hamburger++;
break;
case '2': Hotdog++;
break;
case '3': Frenchfries++;
break;
case '4': Potatochips++;
break;
case '5': Cookies++;
break;
case '6': Drink++;
break;

}

}

while (choice[0] != 'n');

Register(Hamburger, Hotdog, Frenchfries, Potatochips, Cookies, Drink);
}

我尝试了多种变体,但都不起作用,当我按下回车键时,它会说这是一个无效的输入。任何帮助都会有帮助,提前谢谢。

Andreas Wenzel发布的解决方案是更改

while (choice[0] != 'n');

while (choice[0] != '');

我希望这能帮助其他人。谢谢大家!

相关内容

  • 没有找到相关文章

最新更新