C++에서 문자열의 일부를 바꾸는 방법
-
replace()
메서드를 사용하여 C++에서 문자열의 일부 바꾸기 - 사용자 지정 함수를 사용하여 C++에서 문자열의 일부 바꾸기
-
regex_replace()
메서드를 사용하여 C++에서 문자열의 일부 바꾸기
이 문서에서는 C++에서 문자열의 일부를 바꾸는 방법에 대한 여러 방법을 보여줍니다.
replace()
메서드를 사용하여 C++에서 문자열의 일부 바꾸기
replace
는std::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
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