jjycoco   2년 전

왜 런타임 오류가 나는건지 ㅠㅠ

원래는 while문안에 switch문썼는데 안돼서

while안에 if로바꾸고

안돼서 for안에 if로바꿨는데도 안돼네요 ㅠ

djm03178   2년 전

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을 [] 연산자로 바꿔주면 됩니다.

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