pv104   6년 전

문제는 맞췄는데 이해가 가지 않는 부분이 있어 질문 드립니다.

테스트 케이스의 개수가 정해지지 않은 문제의 경우 EOF를 이용하여 종료를 했었는데요

(11719 그대로 출력하기 2)

그때 사용한 코드가 아래의 소스 코드입니다.

이 코드를 이용해서 정답 처리가 되었었는데, 이번 문제에서는 동일한 방법으로 했을때 실패해서

s의 크기가 0일 경우(아무 것도 들어오지 않았을 경우) continue로 다시 입력을 받도록 해서 정답 처리가 되었습니다.

약간 야매로 맞춘 느낌이라서, 제 코드가 잘못되었는지 잘못됐다면 어디가 잘못됐는지 궁금합니다.

EOF를 처리하는 방법에 문제가 있나요? 

khj94811   6년 전

AC를 받은 코드와 아닌 두 개의 코드에 대해서 아무 것도 입력하지 않고 엔터만 쳐보는 것으로 비교해보세요.

pv104   6년 전

khj94811님 // 엔터를 쳤을때 받은 코드는 아무 문장도 출력되지 않고 받지 않은 코드는 디폴트값인 0 0 0 0이 출력되는걸로 봐서 EOF를 체크하는 문장이 

작동을 하지 않는 것 같습니다. 이 경우 해결 방법이 있을까요?

khj94811   6년 전

getline을 아래처럼 사용해주시면 됩니다

EOF를 읽으면 while문을 탈출해요

pv104   6년 전

khj94811님 // 감사합니다! 혹시 어떤 원리로 작동하는지 알 수 있을까요?getline이 아무것도 읽지 않으면 EOF를 리턴하는 건가요?

khj94811   6년 전

http://www.cplusplus.com/reference/string/string/getline/?kw=getline 여기에 보시면 return 타입 등 자세하게 나와있습니다 :)

pv104   6년 전

자세하게 설명해주셔서 감사합니다!

댓글을 작성하려면 로그인해야 합니다.