2941번 - 크로아티아 알파벳
string에서 i번째 문자를 받아올 때 at(i)과 [i]의 차이가 궁금합니다.
코드 중 일부로
첫번쨰 경우는 런타임에러, 두번쨰 경우는 정답입니다.
만약, 첫번쨰 경우에서 i가 마지막 문자를 가리킬 때 i+1, i+2에 접근할 수 없기 때문에 에러가 나는거라면
두번째 경우에서도 같은 에러가 발생해야 하는 것 아닌가요?
string.at()은 입력의 범위를 확인해서 문자열의 범위를 벗어나는 인덱스를 접근하려 들면 out of range 예외를 발생시킵니다.
string[]은 범위 체크가 없습니다. 범위를 벗어나는 인덱스에 접근은 가능하지만 undefined behaviour이며 어떤 값이 들어있을지 알 수 없습니다.
s[s.length()]는 에러가 아니지만, s.at(s.length())는 에러입니다.
댓글을 작성하려면 로그인해야 합니다.
endbendb4303 5년 전
string에서 i번째 문자를 받아올 때 at(i)과 [i]의 차이가 궁금합니다.
코드 중 일부로
첫번쨰 경우는 런타임에러, 두번쨰 경우는 정답입니다.
만약, 첫번쨰 경우에서 i가 마지막 문자를 가리킬 때 i+1, i+2에 접근할 수 없기 때문에 에러가 나는거라면
두번째 경우에서도 같은 에러가 발생해야 하는 것 아닌가요?