我正在做一个学校项目,它是一个收银机。我在输入验证方面遇到了问题,我有一个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] != ' ');
我希望这能帮助其他人。谢谢大家!