我有一个简单的代码:如果 ch
是 Y
,那么第一个 if
语句运行,如果 N
,然后是另一个,如果有的话,然后是 else
语句。但是如果我给了一个以上的字符,那么它会多次写出“错误输入”。我该如何解决这个问题,让我编写的 else
语句只运行一次?
#include <iostream>
using namespace std;
int main()
{
bool running = true;
char ch;
do{
cout << "Enter Y or N: ";
cin >> ch;
cout << endl;
if(ch == 'Y'){
cout << "You entered yes." << endl;
running = false;
} else if(ch == 'N'){
cout << "You entered no." << endl;
running = false;
} else{
cout << "Wrong input." << endl;
}
}while(running);
return 0;
}
最佳答案
您需要做的是清除输入流的其余部分,以确保在下一次迭代中您正在等待新的输入,而不是读取留在缓冲区中的输入。我们可以使用 ignore
来实现这一点
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
您可以将它放在 do 循环的最后一行以便它为每个案例清除缓冲区,或者您可以将它添加到最后一个 else 语句。
关于c++ - 字符输入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35988415/