【问题标题】:Character input issue字符输入问题
【发布时间】:2016-03-14 13:06:32
【问题描述】:

我有一个简单的代码:如果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;
}

【问题讨论】:

标签: c++ character


【解决方案1】:

您需要做的是清除输入流的其余部分,以确保在下一次迭代中您正在等待新输入,而不是读取留在缓冲区中的输入。我们可以使用ignore 来表示类似

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

您可以将它放在 do 循环的最后一行,以便它为每个案例清除缓冲区,也可以将它添加到最后一个 else 语句中。

【讨论】:

  • 谢谢,第一次尝试似乎可以正常工作,但在此之后它不接受任何输入并且程序崩溃
  • 它会写出一次错误的输入,然后它什么也没反应。
  • @Ratonhnhaketon 我忘了添加分隔符。试试更新的代码。
  • 工作。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2018-12-09
相关资源
最近更新 更多