mung3477   2년 전

안녕하세요. cin.get() 때문에 허송세월을 보내서 질문 드립니다.

군인 특성 상 온라인 컴파일러를 쓰고 있는데요.

https://www.onlinegdb.com/onli... 에서 문제를 풀 때는 \n 하나를 입력받기 위해 cin.get()을 한 번 써주었는데,

https://www.tutorialspoint.com...에서 문제를 풀 때는 그렇게 해서 안되어 cin.get()을 두 번 썼습니다. 인터넷에 찾아보니 \n은 LF(줄바꿈)과 CR(커서를 줄 맨 앞으로 이동)이 합쳐져 있고, 실제로 위 사이트에서 실행했을 때도 아스키코드 값이 두 개가 읽히더라고요.

그런데 백준에 넣을 때는 cin.get()을 한 번 쓰는 걸로 해야 제대로 돌아갔습니다. 

\n이 컴파일/런타임 환경에따라 아스키코드 1개/2개로 값이 달라지나요? 이런 경우는 처음이라 질문 드립니다..

코드가 스포일러가 될까봐 main 만 남겨두었습니다.

evenharder   2년 전

네, 운영체제에 따라 \n의 구성이 다릅니다. CR LF로 검색해보시길 권해드립니다. cin의 >> 연산자는 이런 문제를 처리하기 때문에 get 대신 사용해보시기 바랍니다.

mung3477   2년 전

답변 감사드립니다. 

cin으로 풀려다가 한 글자씩 입력 받아야해서 string 후처리 하기 귀찮아서 꾀를 썼다가 헛고생만 했네요.. 검색 해보겠습니다 감사해요!

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