• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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.... 이런게 안뜨고 계속 가능건가요?

답변 1

답변을 작성해보세요.

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"이 출력되실 것입니다.