C++ cin객체 받아 비교하기

k960903의 이미지

cout<<(일부 생략)
"한 판 더 하시겠습니까?(y/n) ";
	cin>>onemore;//onemore은 char형
	switch(onemore){
	case 'y': case 'Y': case 'n': case 'N':break;
	default:
		cout<<"다사 입력해주세요(y/n)";
		cin>>onemore;
		break;
		}
 
	}while(onemore='y' || onemore=='Y');

여기서 문제는 만약 y나 n이 아닌 yyyn등등 y로 시작하는 문자열을 입력시 무한루프에 빠진다는 것입니다.ㅠㅠ
도대체 사용자에게서 char형으로 단일문자만을 받고, 만약 문자열 입력 시 다시 입력해달라는 문자를 입력해주려면 어떻게 해야하나요?

익명 사용자의 이미지

string으로 받고 길이가 2 이상이면 다시 입력을 요구하세요. 길이가 1이면 첫번째 문자를 가지고 지금 코드 그대로 사용하시면 되겠네요.

라스코니의 이미지

while(onemore='y' || ...) 에서 생기는 군요.

onemore == 'y' 로 고친 후 해보세요.

k960903의 이미지

그걸로 해도.... yy하면 무한루프에 걸려요...ㅠ