簡體   English   中英

cout和cin在C ++函數中重復嗎?

[英]cout and cin repeating within a function in C++?

我編寫的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)剪刀S

輸入播放(R)ock,(P)aper或(S)剪刀R

剪刀

按任意鍵繼續 。

我無法弄清楚我在做什么錯。

您兩次調用validatePlay()。

第一次在這里:

char play= validatePlay();

第二次是在這里:

validatePlay();

您僅存儲和使用第一個調用的結果。

您的主要內容如下:

char play= validatePlay();

validatePlay();

您認為那是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM