gpt4 book ai didi

c++ - 当 cin 的输入是 'dot' 时 while 循环到无穷大

转载 作者:太空宇宙 更新时间:2023-11-04 16:29:36 25 4
gpt4 key购买 nike

我在使用 cin 方法获取变量时遇到问题。输入数字时没有问题,但输入点[.]等特殊字符时,while 循环无限循环。我做错了什么?

cout << "What is your race" <<endl<<"1.Human\n2.troll\n3.zombie"<<endl;
cin >> *race;
while(*race<1||*race>3)
{
system("cls");
cout << "Wrong choice"<<endl<< "What is your race" <<endl<<"1.Human\n2.troll\n3.zombie"<<endl;
cin >> *race;
}

我搜索了答案,我应该刷新缓冲区,但我不知道该怎么做。我是 C++ 的新手。谢谢

最佳答案

race 设为一个字符,然后您将能够:

while (*race < '1' || *race > '3')

这可能是您想要实现的目标。

解释:

当您将 cin >> 转换为 int 时,它将给定的 ASCII 字符串转换为整数值。 . 没有整数含义,因此它不会被读入 race 并且 failbit 已设置 - 进一步的 >> 没有 - op,直到你清除它们。但是,如果您将 cin >> 转换为 char 并将其与其他 char(嗯,实际上是它们的 ASCII 代码)进行比较,您将能够毫无困难地检查它。

关于c++ - 当 cin 的输入是 'dot' 时 while 循环到无穷大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8487758/

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