gpt4 book ai didi

c++ - 一个循环和一个 int 变量中的字符不能像我预期的那样工作

转载 作者:太空狗 更新时间:2023-10-29 21:29:45 24 4
gpt4 key购买 nike

我在这段代码中看到了一个不寻常的问题:

#include <iostream>
using namespace std;

int main()
{
int number;
bool repeat=true;

while (repeat)
{
cout<<"\nEnter a number:";
cin>>number;
cout<<"\nNumber is:"
<<number;
cout<<"\nRepeat?:";
cin>>repeat;
}
system("pause");
return 0;
}

在这段代码中,当我在 int 类型变量中放置一个 character 这样的“A”时 while 循环一遍又一遍地重复并且不不要问我是否重复。当我输入字符而不是整数时,这个问题就会出现。这也出现在 for 中。

为什么会发生这种情况?谢谢

最佳答案

读入无法转换的用户输入后,输入流处于无效状态。您需要清空流并调用 clear 方法来重置流上的错误位以恢复正常操作。

如果您检测到输入不成功(使用输入流状态位,可通过 good()fail() 等方法访问),您可以重置使用与此类似的代码的流:

std::cin.clear(); 
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

关于c++ - 一个循环和一个 int 变量中的字符不能像我预期的那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115679/

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