http://en.cppreference.com/w/c... 를 보시면 다음과 같이 말하고 있습니다.
"Throws std::out_of_range if pos >= size()."
즉 str.at(len)에 접근하면 Exception이 발생합니다. 이렇게 되는 경우는 문자열의 마지막에 c가 있을 때를 가정해보시면 됩니다. i가 len - 1일 때 다음 문자가 =이나 -인지를 확인하기 위해서 str.at(i + 1)을 호출하게 됩니다.
반면에 값을 변경하지 않는 [] 연산자는 size()번째 원소에 접근하면 널 문자를 반환합니다. 따라서 이 경우는 모든 at을 [] 연산자로 바꿔주면 됩니다.
jjycoco 6년 전
왜 런타임 오류가 나는건지 ㅠㅠ
원래는 while문안에 switch문썼는데 안돼서
while안에 if로바꾸고
안돼서 for안에 if로바꿨는데도 안돼네요 ㅠ