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)cissor S
输入播放 (R)ock、(P)aper 或 (S)cissor R[=11=]
剪刀
按任意键继续。 . .
我不知道我做错了什么。
你的主要内容是:
char play= validatePlay();
validatePlay();
你认为那有什么作用?
您调用了两次 validatePlay()。
第一次来这里:
char play= validatePlay();
第二次来了:
validatePlay();
您只是存储和使用第一次调用的结果。
我编写的 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[=11=]
剪刀
按任意键继续。 . .
我不知道我做错了什么。
你的主要内容是:
char play= validatePlay();
validatePlay();
你认为那有什么作用?
您调用了两次 validatePlay()。
第一次来这里:
char play= validatePlay();
第二次来了:
validatePlay();
您只是存储和使用第一次调用的结果。