字符输入问题
Character input issue
我有一个简单的代码:如果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++模板编程设计问题 - 根据输入文件返回不同的类型
- 如何忽略第一个字符输入后的所有内容
- 使用单个变量对字符输入进行计数
- 不确定出了什么问题(字符串输入)
- 确定用户字符输入 C++ 的结束
- 将单个字符串/字符输入串行监视器
- 如何将字符输入限制为仅获取一个字符串"cin"
- C++:使用 fgets() 读取字符输入时出错
- 如何拒绝 cin 中的字符输入并定义最小和最大整数值
- C++ 字符输入仅输出第一个字母
- 限制 2D 数组中的字符输入
- 循环直到整数输入在所需范围内无法处理非数字字符输入
- 类型转换问题:字符数组的元素转换为整数变量
- C++常量字符*输入
- 使用带符号字符输入的isalnum-Visual C++
- 限制C++中的字符输入
- 字符输入问题
- 字符** + 输入" "字符
- 文件 I/O 操作 - 奇怪的字符输入