C++에서 문자열의 일부를 바꾸는 방법

Jinku Hu 2023년10월12일
  1. replace()메서드를 사용하여 C++에서 문자열의 일부 바꾸기
  2. 사용자 지정 함수를 사용하여 C++에서 문자열의 일부 바꾸기
  3. regex_replace()메서드를 사용하여 C++에서 문자열의 일부 바꾸기
C++에서 문자열의 일부를 바꾸는 방법

이 문서에서는 C++에서 문자열의 일부를 바꾸는 방법에 대한 여러 방법을 보여줍니다.

replace()메서드를 사용하여 C++에서 문자열의 일부 바꾸기

replacestd::string 클래스 내장 메소드이며 문자열 객체의 특정 부분을 교체하는 정확한 기능을 제공합니다. 함수의 첫 번째 매개 변수는 주어진 문자열이 삽입되는 시작 문자를 나타냅니다. 다음 매개 변수는 새 문자열로 대체되어야하는 하위 문자열의 길이를 지정합니다. 마지막으로 새 문자열이 세 번째 인수로 전달됩니다. replace 메소드는 호출되는 문자열 객체를 수정합니다.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main() {
  string input = "Order $_";
  string order = "#1190921";

  cout << input << endl;

  input.replace(input.find("$_"), 2, order);

  cout << input << endl;

  return EXIT_SUCCESS;
}

출력:

Order $_
Order #1190921

사용자 지정 함수를 사용하여 C++에서 문자열의 일부 바꾸기

또는 내부 교체를 수행하는 대신 별도의 수정 된 문자열 객체를 반환하는 사용자 지정 함수를 생성 할 수 있습니다. 이 함수는문자열변수에 대한 3 개의 참조를받습니다. 첫 번째 문자열은 수정 용이고 두 번째 하위 문자열은 대체 용이며 세 번째 문자열은 삽입 용입니다. 여기서 함수는 이동 의미를 가지고 있기 때문에 값으로 구성된 문자열을 반환한다는 것을 알 수 있습니다.

#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::string;

string Replace(string& str, const string& sub, const string& mod) {
  string tmp(str);
  tmp.replace(tmp.find(sub), mod.length(), mod);
  return tmp;
}

int main() {
  string input = "Order $_";
  string order = "#1190921";

  cout << input << endl;

  string output = Replace(input, "$_", order);

  cout << output << endl;

  return EXIT_SUCCESS;
}

출력:

Order $_
Order #1190921

regex_replace()메서드를 사용하여 C++에서 문자열의 일부 바꾸기

이 문제를 해결하는 데 사용할 수있는 또 다른 유용한 방법은regex_replace를 활용하는 것입니다. <regex>헤더에 정의 된 STL 정규 표현식 라이브러리의 일부입니다. 이 메서드는regex를 사용하여 주어진 문자열의 문자를 일치시키고 시퀀스를 전달 된 문자열로 바꿉니다. 다음 예에서regex_replace는 새 문자열 객체를 생성합니다.

#include <iostream>
#include <regex>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::regex;
using std::regex_replace;
using std::string;

int main() {
  string input = "Order $_";
  string order = "#1190921";

  cout << input << endl;

  string output = regex_replace(input, regex("\\$_"), order);

  cout << output << endl;

  return EXIT_SUCCESS;
}

출력:

Order $_
Order #1190921
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - C++ String