我有一个简单的代码:如果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;
}
答案 0 :(得分:0)
您需要做的是清除输入流的其余部分,以确保在下一次迭代中您正在等待新输入而不是读取保留在缓冲区中的输入。我们可以使用ignore
来表示
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
您可以将其作为do循环的最后一行放置,以便为每种情况清除缓冲区,或者将其添加到最后一个else语句中。