[英]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.