C++ 표준 라이브러리의 at() 함수는 문자열에서 지정된 위치(인덱스)에 있는 문자에 안전하게 접근할 수 있도록 해주는 멤버 함수입니다. 일반적인 배열 인덱싱 연산자([])와 달리, at() 함수는 범위 검사(range check)를 수행하기 때문에 잘못된 인덱스에 접근할 경우 프로그램이 비정상 종료되는 대신 std::out_of_range 예외를 발생시킵니다.
아래 예제에서는 at() 함수를 활용하여 문자열의 각 문자를 하나씩 순회하고, 각 문자를 서로 다른 줄에 출력하는 방법을 살펴보겠습니다.
예제 코드
#include<iostream>
using namespace std;
int main() {
string my_str = "Hello World";
// at() 함수로 i번째 위치의 문자 가져오기
for(int i = 0; i < my_str.length(); i++) {
cout << my_str.at(i) << endl;
}
}실행 결과
H e l l o W o r l d
코드 설명
위 코드의 동작 과정은 다음과 같습니다.
1. 문자열 선언: my_str 변수에 "Hello World"라는 문자열을 저장합니다. 공백 문자도 하나의 유효한 문자로 취급됩니다.
2. 반복문 순회: 인덱스 0부터 문자열 길이보다 작은 값까지 반복하면서, my_str.at(i)를 호출해 i번째 위치의 문자를 가져옵니다.
3. 출력: endl을 사용해 문자마다 줄바꿈을 추가하므로, 결과적으로 각 문자가 세로 방향으로 한 줄씩 출력됩니다. 중간의 빈 줄은 원래 문자열에 포함된 공백 문자입니다.
at() 함수 사용 시 주의사항
at() 함수에 전달하는 인덱스가 유효 범위(0 ~ length() - 1)를 벗어나면 std::out_of_range 예외가 발생합니다. 따라서 실무에서는 try-catch 블록으로 감싸 예외를 처리하거나, 반복문 조건을 통해 항상 유효한 범위 내에서만 접근하도록 주의해야 합니다.