필자가 작성한 validatePlay 함수는 재생 유형과 일치하는 입력 된 문자를 허용해야합니다.Cout과 cin은 C++의 함수 내에서 반복됩니까?
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) 옥토퍼스 (P) 조리개 또는 (S) cissor의 R
위 재생 입력 (R) 옥토퍼스 (P) 조리개 또는 (S) cissor의 S 재생 입력
계속하려면 아무 키나 누르십시오. . .
내가 여기서 잘못하고있는 것을 알아낼 수 없습니다.
validatePlay를 두 번 호출합니다. 두 번째로 읽은 값 즉 읽은 값을 무시합니다. – bolov