gpt4 book ai didi

C++ isalnum 无限循环

转载 作者:搜寻专家 更新时间:2023-10-31 00:03:43 27 4
gpt4 key购买 nike

您好!

这次让我们减少过多的介绍,直奔主题。

我在 C++ 中使用 isalnum 方法时遇到问题。

代码:

int playAgainst = 0;
do
{
cout << "Who do you want to play against?(1/2)\n";
cout << "1: Human player\n";
cout << "2: Computer player\n";
cin >> playAgainst
} while(!isalnum(playAgainst) && playAgainst != 0);

如代码所示,我为用户提供了一个选择。与人对战或与电脑对战。

我想要的是,只要用户输入任何其他内容然后输入一个整数值(cin >> playAgainst)来重复问题。但是,如果我输入一个字符或字符串值,它会无限循环。我不是 100% 确定,但很明显,如果问题是非 int 值已经保存为 playAgainst 的值。如果输入值是 int,我如何在保存之前检查这段代码它?

或者是保存为字符/字符串然后检查的唯一可能性吗?

如果是后者,新的问题又出现了。 isalnum 只接受 int 作为参数,至少据我所知。我将如何检查该字符串或字符是否为 int?

感谢您花时间阅读。希望我会尽快接受回复 ^^

谢谢大家的回答。我得到了我想要的,一切都解决了。

我选择接受答案的原因是……因为最初,它让我的代码按照我想要的方式工作。不过我想接受多个答案..

最佳答案

playAgainst 设为 char 并与 '0' 进行比较,而不是 0。现在,用户必须输入字符 '1''2' 的 ASCII(或任何字符集)代码。

isalnumchar 有效范围之外的 int 无效,EOF 除外。 (它采用 int 参数的事实是 C 的遗留问题,它具有与 C++ 不同的整数提升规则。 以适应 EOF。 )

关于C++ isalnum 无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5485585/

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