Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 std::string 문자열을 소문자로 변환하는 방법

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 함수만 익혀두면 소문자·대문자 변환을 모두 손쉽게 처리할 수 있습니다.