gpt4 book ai didi

c++ - 第二个无效响应在我的验证循环中被接受

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:38 26 4
gpt4 key购买 nike

我现在遇到的问题是我可以在第一次输入随机内容并且它工作正常但在第二次尝试时它会接受错误的输入。例如:第一次输入国际象棋,它会说再试一次。第二次输入国际象棋它将接受国际象棋并打开检查然后将 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: ";
}

最佳答案

您的代码将接受以 cs(或其对应的大写字母)开头的任何输入。

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++ - 第二个无效响应在我的验证循环中被接受,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19624396/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com