endbendb4303   5년 전

string에서 i번째 문자를 받아올 때 at(i)과 [i]의 차이가 궁금합니다.

코드 중 일부로 

첫번쨰 경우는 런타임에러, 두번쨰 경우는 정답입니다.

만약, 첫번쨰 경우에서 i가 마지막 문자를 가리킬 때 i+1, i+2에 접근할 수 없기 때문에 에러가 나는거라면

두번째 경우에서도 같은 에러가 발생해야 하는 것 아닌가요?

k5nen   5년 전

string.at()은 입력의 범위를 확인해서 문자열의 범위를 벗어나는 인덱스를 접근하려 들면 out of range 예외를 발생시킵니다.

string[]은 범위 체크가 없습니다. 범위를 벗어나는 인덱스에 접근은 가능하지만 undefined behaviour이며 어떤 값이 들어있을지 알 수 없습니다.

djm03178   5년 전

s[s.length()]는 에러가 아니지만, s.at(s.length())는 에러입니다.

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