c++ - 字符输入问题

标签 c++ character

我有一个简单的代码:如果 chY,那么第一个 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/

相关文章:

c++ - std::map at 函数总是抛出异常

ios - 删除 'NSString' 中的后端字符

c# - 在 winforms 文本框中显示不可打印的字符

python - 如何在 Python 中获取类似于 Pascal readkey 的字符

C:替换转义字符 esp '\\'

c++ - OpenGL:如何使光与旋转无关?

c++ - C++ 与 Java 中的构造函数和变量名称

c++ - 如何转换C++11中忽略参数的函数?

firefox - Unicode 特殊字符在 Firefox 和 Chrome/IE 中的显示不同

java - 最大值的预期数量