字符输入问题

Character input issue

本文关键字:问题 字符输入      更新时间:2023-10-16

我有一个简单的代码:如果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 语句中。