我正在为计数器编写代码。如果我将“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/