C++ 프로그래밍을 하다 보면 문자열의 모든 알파벳을 소문자로 변환해야 하는 경우가 자주 발생합니다. 예를 들어 사용자 입력을 정규화하거나 대소문자 구분 없이 문자열을 비교할 때 유용하게 활용됩니다. 이 글에서는 C++ 표준 라이브러리의 transform 함수를 사용하여 std::string을 간단하게 소문자로 변환하는 방법을 알아보겠습니다.
transform 함수란?
transform 함수는 <algorithm> 헤더에 포함되어 있는 STL(표준 템플릿 라이브러리) 알고리즘입니다. 이 함수는 지정된 범위의 각 요소에 특정 연산을 적용한 후, 그 결과를 목적지 범위에 저장하는 역할을 합니다.
문자열을 소문자로 변환할 때 transform 함수는 다음과 같은 네 가지 인자를 받습니다.
- 첫 번째 인자: 변환을 시작할 문자열의 시작 반복자(
begin()) - 두 번째 인자: 변환을 종료할 문자열의 끝 반복자(
end()) - 세 번째 인자: 변환 결과를 저장할 위치의 시작 반복자
- 네 번째 인자: 각 문자에 적용할 함수로, 여기서는
::tolower를 사용하여 문자를 소문자로 변환합니다.
참고로 세 번째 인자에 문자열 자신의 시작 반복자를 전달하면 원본 문자열이 그대로 덮어써지며(in-place 변환), 별도의 변수 없이 간편하게 처리할 수 있습니다.
예제 코드
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string my_str = "Hello WORLD";
cout << "Main string: " << my_str << endl;
transform(my_str.begin(), my_str.end(), my_str.begin(), ::tolower);
cout << "Converted String: " << my_str;
}
실행 결과
Main string: Hello WORLD Converted String: hello world
대문자로 변환하는 방법
동일한 원리로 네 번째 인자에 ::tolower 대신 ::toupper를 전달하면 문자열의 모든 알파벳을 대문자로 변환할 수 있습니다. 즉, 하나의 transform 함수만 익혀두면 소문자·대문자 변환을 모두 손쉽게 처리할 수 있습니다.