gpt4 book ai didi

c++ - while循环中断,我不知道为什么

转载 作者:太空狗 更新时间:2023-10-29 20:03:17 25 4
gpt4 key购买 nike

我正在为计数器编写代码。如果我将“a”作为输入,它应该 +1 计数器并将其显示在屏幕上。但是当我这样做时,它在屏幕上显示 1 并且程序结束。我希望它一直运行直到并且除非我提供其他字符作为输入。我犯了什么错误?

#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
int Counter = 0;
char t;

while(true)
{
t = cin.get();
if(t == 97)
{
Counter = Counter + 1;
}
else
break;
system("cls");
cout << Counter;
}
return 0;
}

最佳答案

问题是当您输入 'a' 时,您可能也在按 Enter,这被解释为另一个 char .第二个 char 绝对不是 a,所以你的程序中断了。这可以通过输出你读到的内容来验证:

for (;;) {
std::cout << '?';
char t = std::cin.get();
std::cout << (int)t << '\n';
if (t != 'a') break;
}
std::cout << "done\n";

运行时打印:

?a
97 // this is 'a'
?10 // this is '\n', note the additional ?
done

最简单的修复方法是在 cin 上使用输入流运算符,这会丢弃输入中的空格(而 get() 不会):

char t;
for (;;) {
std::cout << '?';
std::cin >> t;
std::cout << (int)t << '\n';
if (t != 'a') break;
}
std::cout << "done\n";

运行时产生:

?a
97
?b
98
done

这正是您想要的。

关于c++ - while循环中断,我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30217418/

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