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

C++ 문자열에서 특정 문자를 손쉽게 제거하는 방법

이 글에서는 C++에서 문자열로부터 특정 문자를 제거하는 방법을 살펴보겠습니다. C++에서는 표준 라이브러리의 erase() 함수와 remove() 함수를 함께 사용하면 이 작업을 아주 간단하게 처리할 수 있습니다. remove() 함수는 문자열의 시작 주소와 끝 주소, 그리고 제거하고 싶은 문자를 인자로 받아 해당 문자를 걸러내는 역할을 합니다.

입력: 문자열 "ABAABACCABA"
출력: "BBCCB"

알고리즘

1단계: 문자열을 준비합니다
2단계: remove() 함수를 사용하여 특정 문자가 나타나는 모든 부분을 제거합니다
3단계: 결과를 출력합니다
4단계: 종료

예제 코드

#include<iostream>
#include<algorithm>

using namespace std;
main() {
    string my_str = "ABAABACCABA";

    cout << "Initial string: " << my_str << endl;

    my_str.erase(remove(my_str.begin(), my_str.end(), 'A'), my_str.end()); // 문자열에서 'A' 제거
    cout << "Final string: " << my_str;
}

실행 결과

Initial string: ABAABACCABA
Final string: BBCCB

동작 원리 이해하기

위 코드에서 remove() 함수는 실제로 문자열의 크기를 줄이지 않습니다. 대신 제거되지 않은 문자들을 앞쪽으로 모으고, 그 뒤에 남은 불필요한 영역의 시작 위치(논리적인 새로운 끝)를 가리키는 반복자를 반환합니다. 따라서 반환된 반복자부터 문자열의 실제 끝(my_str.end())까지의 구간을 erase() 함수로 잘라내야 비로소 문자가 완전히 삭제됩니다.

이처럼 remove()erase()를 조합하는 패턴은 C++에서 널리 쓰이는 관용구로, erase-remove 관용구(erasure-remove idiom)라고 불립니다. 이 방식은 특정 문자뿐만 아니라 조건에 맞는 여러 문자나 요소를 한 번에 제거할 때도 활용할 수 있어 매우 유용합니다.