아닙니다. 잘하셨습니다!
자, 런타임에러의 원인을 알아봅시다. 공백 하나만 들어올 때, 런타임에러가 일어나는 이유는 아래의 erase문에 있습니다.
공백 하나만 들어온 경우 input = ' ' 입니다. 즉, input의 size는 1입니다. 그런데, 이것을 지우면, input의 size는 0이 되면서 빈 스트링이 되겠죠?
그런데, 그 아래 if문에서 input.size()-1 = 0 - 1 = -1, -1번째 인덱스에 접근하게 됩니다. 애초에, 비어있는 스트링이 되었으므로, at으로 접근하는 것은 위험합니다.
그렇다면, 이 경우만 따로 처리하면 어떨까요? 만약, 처음 erase를 하고나서, 비어있다면( = 사이즈가 0이라면! ) 공백인 경우라는 것을 알아낼 수 있겠죠!
나머지 경우는 이미 잘 처리되었으니, 이 부분만 고려해주세요
kwondae2 3년 전
제목 그대로 런타임 오류가 뜹니다.
원인은 공백을 입력했을 경우 입니다.
문제는 이걸 어떻게 처리해야 할지 잘 모르겠습니다. 스트링이 공백일 경우에 count_words 값을 -1로 할당하고 싶은데 공백인 조건을 캐치를 못하겠네요.
다른 질문글들을 보니 While(cin>>input[i]) 처럼 조건을 주는데 잘 이해가 안됩니다.
아무래도 EOF에 대한 이해가 부족한거 같은데 설명 부탁 드리겠습니다. 혹은 제가 잘못 방향을 잡고 있다면 조언 부탁드립니다.
감사합니다 !