我最近刚开始学习 C++ 并创建了一个简单的 RPG 游戏来练习。但是我遇到的一个问题是switch
语句在使用default
case时陷入无限循环。
我的代码基本上是这样的:
while (cond)
{
//Ask user for input 1-4
cin >> choice;
switch(choice - 1)
{
case 0:
//Action
break;
case 1:
//Action
break;
case 2:
//Action
break;
case 3:
//Action
break;
default:
cout << "You entered an invalid command. Try again." << endl;
}
}
最终cond
会在敌人HP通过//action
情况降到或低于0时变为false 。
但是,当我输入一个随机密钥时,它会转到默认情况并再次要求用户输入,但会跳过cin >> choice;
并在无限循环中再次重播默认情况。
我怎样才能避免这种情况?
您需要清除输入状态,然后忽略无效的垃圾。
default:
cout << "You entered an invalid command. Try again." << endl;
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句