gpt4 book ai didi

c++ - 为什么当我输入一个字符时我的程序有一个无限循环?

转载 作者:行者123 更新时间:2023-11-30 01:54:34 25 4
gpt4 key购买 nike

#include<iostream>
#include<cstdlib>
#include<ctime>
#include<string>

using namespace std;

int main()
{
char replay;
int userInput;
cout<< "Let's play Rock, Paper, Scissors"<<endl;
do
{
cout<<"Enter 1 for Rock, 2 for Paper, 3 for Scissors"<< endl;
cin>> userInput;

switch(userInput)
{
case 1:
cout <<"You chose rock" << endl;
break;

case 2:
cout <<"You chose paper" <<endl;
break;

case 3:
cout <<"You chose scissors" << endl;
break;

default:
cout << userInput << " is not a valid choice"<< endl;
break;
}
cout<<"Would you like to play again (Y for yes, N for no)?"<<endl;
cin >> replay;
} while((replay=='Y') || (replay=='y'));

return 0;

}

当我在输入数字的答案中输入一个字符时,当我被问及是否要再次玩游戏时,我输入了一个不是 Y、y、N 或 n 的字符,它会进入无限循环

最佳答案

userInput 定义为 int。当您尝试读取一个 int,而流中实际是一个 char 时,它将失败(但 char 仍在缓冲区)。您必须清除错误状态并忽略错误输入:

if (!(cin >> userInput))
{
cin.clear(); // clears the error state
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // remove the bad input from the buffer
}
else
{
// the code if the input was valid
}

关于c++ - 为什么当我输入一个字符时我的程序有一个无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21844160/

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