【问题标题】:cout and cin repeating within a function in C++?cout 和 cin 在 C++ 中的函数内重复?
【发布时间】:2015-03-20 04:37:28
【问题描述】:

我编写的 validatePlay 函数应该接受与播放类型匹配的输入字符。

char validatePlay();

void getHandPlayed(char);


int main()
{

    char play= validatePlay();

    validatePlay();

    getHandPlayed(play);

    system("pause");
}

char validatePlay()
{
    char play;
    cout << "enter play (R)ock, (P)aper or (S)cissor ";
    cin >> play;
    while (cin.fail() || play != 'R' && play != 'P' && play != 'S')
    {
        cin.clear();
        cin.ignore(80, '\n');
        cout << "re-enter play (R)ock, (P)aper or (S)cissor ";
        cin >> play;
    }
    return play;

}

void getHandPlayed(char play)
{

    switch(play)
    {
        case 'R':
            cout << "Rock"<<endl;
            break; 
        case 'P':
            cout << "Paper"<<endl;
            break;
        case 'S':
            cout << "Scissors"<<endl;
            break;

    }
}

它有点工作,但由于某种原因,无论我输入什么,cout 和 cin 都会出现两次,但它只接受我输入的第一个字符。它最终看起来像这样。

进入玩 (R)ock、(P)aper 或 (S)cissor S

进入播放 (R)ock、(P)aper 或 (S)cissor R

剪刀

按任意键继续。 . .

我不知道我在这里做错了什么。

【问题讨论】:

  • 你调用 validatePlay 两次。第二次忽略它返回的内容,即读取值。

标签: c++ cout cin


【解决方案1】:

你调用了 validatePlay() 两次。

第一次来了:

char play= validatePlay();

第二次来了:

validatePlay();

您只是存储和使用第一次调用的结果。

【讨论】:

    【解决方案2】:

    你有这个在你的主要:

    char play= validatePlay();
    
    validatePlay();
    

    你认为这有什么作用?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 2011-12-07
      • 1970-01-01
      相关资源
      最近更新 更多