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

C++에서 문자열의 일부를 다른 문자열로 교체하는 방법

이 글에서는 C++에서 문자열의 일부를 다른 문자열로 교체하는 방법을 알아봅니다. C++에서는 string.replace() 함수를 사용하면 문자열 교체 작업을 아주 간단하게 처리할 수 있습니다.

다만 주의할 점은 replace() 함수가 일치하는 첫 번째 항목만 교체한다는 것입니다. 따라서 문자열 내의 모든 일치 항목을 교체하려면 반복문과 함께 사용해야 합니다. 이 함수는 세 가지 인자를 받습니다.

  • 시작 인덱스: 교체를 시작할 위치
  • 길이: 교체 대상 문자열의 길이
  • 새 문자열: 기존 문자열 대신 삽입할 문자열

입력 및 출력 예시

입력: 문자열 "Hello...Here all Hello will be replaced", 교체할 문자열 "ABCDE"
출력: "ABCDE...Here all ABCDE will be replaced"

알고리즘

1단계: 원본 문자열, 교체에 사용할 문자열, 그리고 찾을 문자열을 준비합니다.
2단계: 찾을 문자열이 원본 문자열에 존재하는 동안 반복합니다.
2.1단계: 발견된 위치의 문자열을 지정한 문자열로 교체합니다.
3단계: 최종적으로 수정된 문자열을 반환합니다.

예제 코드

#include<iostream>
using namespace std;
main() {
    int index;
    string my_str = "Hello...Here all Hello will be replaced";
    string sub_str = "ABCDE";
    cout << "Initial String :" << my_str << endl;
    //모든 Hello를 ABCDE로 교체
    while((index = my_str.find("Hello")) != string::npos) {   //Hello가 발견되는 각 위치마다 반복
        my_str.replace(index, sub_str.length(), sub_str); //해당 위치부터 기존 문자열을 제거하고 새 문자열로 교체
    }
    cout << "Final String :" << my_str;
}

코드 설명

위 코드의 핵심은 find()replace() 함수의 조합입니다. find("Hello")는 문자열에서 "Hello"가 처음 나타나는 위치를 반환하며, 더 이상 찾지 못하면 string::npos를 반환합니다. 따라서 while 루프의 조건식은 "Hello"가 존재하는 한 계속 반복되도록 작성되었습니다.

루프 내부에서는 find()가 반환한 인덱스 위치부터 sub_str.length()(5글자)만큼 잘라내고, 그 자리에 sub_str인 "ABCDE"를 삽입합니다. 이 과정이 반복되면 문자열에 남아 있는 모든 "Hello"가 순차적으로 "ABCDE"로 바뀌게 됩니다.

실행 결과

Initial String :Hello...Here all Hello will be replaced
Final String :ABCDE...Here all ABCDE will be replaced