第二个无效响应在我的验证循环中被接受
2nd invaild response is getting accepted in my validation loop
我现在遇到的问题是我可以第一次输入随机的东西并且它工作正常,但在第二次尝试时它会接受错误的输入。例如:第一个输入国际象棋,它会说再试一次。第二个输入国际象棋它将接受国际象棋并打开支票,然后将 h 放入存款金额,导致错误重试
case 1:
cout << "Checking (C) or Savings (S): enter your choice" << endl;
cin.get(choice);
//input validation
while(choice != 'c' && choice != 'C' && choice != 's' && choice != 'S')
{
cin.clear();
cin.ignore(100, 'n');
cout << "Invalid input. Try again: ";
cin.get(choice);
}
//deposit in checking
if (choice == 'c' || choice == 'C')
{
cout << "how much are you depositing: $" << endl; //get deposit
cin >> deposit;
while(!(cin >> deposit)) //make sure user input is valid
{
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(),'n');
cout << "Invalid input. Try again: ";
}
您的代码将接受以 c
或 s
(或其大写对应项)开头的任何输入。
cin.get(choice)
将从流中读取第一个字符并将其存储在 choice
中,稍后您将它用作循环中的条件。
更好的方法是从流中读取整行并检查它是否等于任何正确的选择。
std::cout << "Checking (c) or Savings (s) enter your choice: ";
std::string line;
while (std::getline(std::cin, line)) {
std::transform(std::begin(line), std::end(line), std::begin(line),
::tolower); // Transform line to lower case.
if (line == "c" || line == "s") {
break;
} else {
std::cout << "Invalid input. Try again: ";
}
}
相关文章:
- 正在尝试了解输入验证循环
- 从子菜单返回后,正确的输入至少进入验证循环一次
- 在C++中验证for循环的问题
- 在不再满足条件后,while 循环是否停止验证?
- 程序终止,而不是继续整数输入验证循环
- “并非所有控制路径都返回一个值./&quot“控制可能达到非空隙功能的末端”.验证时循环时
- 在C++测试家庭作业问题中的字符串输入时无法退出循环(作为数据验证)
- 为什么用于输入验证的 while 循环要么完全跳过循环,要么不考虑错误的输入
- 为菜单创建基本的用户输入验证(使用基本的 while/do-while 等循环)
- 循环时的输入验证是无限的
- C++循环未终止时的输入验证
- 当循环不中断时,使用 cin.ignore 和 cin.clear() 来验证输入
- 双重验证使用DO-while循环和IF-ELSE语句
- C++ 数值验证 - 正在使用循环
- 输入验证,需要数字,而不是字符串.代码导致无限循环
- C 误差在DO-while循环中具有输入验证
- 试图在C++中验证双精度有效输入的循环错误
- 使用基于C++11范围的循环验证数组值?[无矢量]
- C++比较两个字符来验证循环条件
- 虽然循环旨在验证用户输入不断循环