다시질문드립니다. getline에 대해서

smartys Reply 9 years 30 weeks ago
getline함수를 사용한 것이 문제입니다. 아예 아무런 값도 넣지 않고 ₩n만 입력하게 될 경우 getline함수의 값은 0이 나오고 그에따라 반복문 조건이 종료됩니다. 반면 EOF를 입력받으면 -1을 반환하게 됩니다. 라고 답장해주셨는데 다시 질문드립니다. getline함수를 사용하면 안되는건가요? 제가 getline(cin, temp)로 temp에 문자열을 넣엇는데 if(temp.at(temp.length()-1)==EOF) 로 조건문을 넣어서 해결하면 안되나요????? 해보니깐 안되는거같은데 왜안되나요?!?!
pichulia Reply 9 years 30 weeks ago
만약 EOF가 읽혔다면(더이상 읽을 문자가 없으면) temp에 아무런 글자도 저장이 안되겠죠? 그래서 temp.length()가 0이 되는데..거기서 1을 빼면 -1번째 글자가 뭐냐구 묻는 꼴이 되겠네요.... 애초에 EOF는 "문자가 아닙니다!" 더이상 읽을 문자가 없다는걸 알려주기 위해서 나타내는, OS딴에서 알려주는 예약문자일 뿐이지, printf("%c",EOF); 뭐 이렇게 한다고 EOF가 출력된다...뭐 이런건 아닙니다.(OS에서 날리는게 아닐수도 있습니다만...)