-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
5.10 강의 질문
21.01.08 21:45 작성 조회수 176
1
int main()
{
cout << "Enter an integer number : ";
int x;
cin >> x;
//cin.fail()
if (cin.fail())
{
cin.clear();
cin.ignore(32767, '/n');
cout << "try again" << endl;
}
else
{
cin.ignore(32767, '\n');
cout << x << endl;
}
}
이렇게 했을떄 99999999999999같은 범위를 초과하는 숫자를 넣었을때 왜 try again은 안뜨는 것이고 왜 console창에 press enter key.... 이런게 안뜨고 계속 가능건가요?
답변을 작성해보세요.
0
안소
2021.01.09
안녕하세요!
if (cin.fail()) 부분의 cin.ignore(32767, '/n'); 에서 '\n'을 질문자님께서 '/n' 라고 써주셨기 때문입니다. 오타나신 것 같아요 ㅠㅠ '\n' 로 해주셔야합니다.
cin.ignore(32767, '/n'); 은 '/n' 문자를 만날때까지 최대 32767 글자를 무시, 즉 버퍼를 비운다는 것인데 '\n'가 아닌 '/n' 라고 써주셔서 '/n' 문자는 없기에 cin.ignore(32767, '/n'); 작업이 영원히 끝나지 못했기 때문인 것으로 보여집니다.
'/n'을 '\n' 로 바꿔주시면 99999999999999같은 범위를 초과하는 숫자 입력시 정상적으로 "try again"이 출력되실 것입니다.
답변 1