반응형
C++에서 문자열의 일부를 대체하는 함수로 replace와 regex_replace를 사용할 수 있습니다. 이 두 함수는 각기 다른 용도와 특성을 가지고 있습니다.
1. 사용 목적
- replace 함수는 단순히 문자열의 특정 위치에 있는 부분 문자열을 다른 문자열로 대체하는 데 사용됩니다.
- regex_replace 함수는 정규 표현식을 사용하여 문자열의 특정 패턴을 찾아 다른 문자열로 대체하는 데 사용됩니다.
replace 함수
replace 함수는 주로 std::string 클래스의 멤버 함수로 제공됩니다. 특정 위치의 부분 문자열을 다른 문자열로 대체할 때 사용됩니다.
std::string& replace(size_t pos, size_t len, const std::string& str);
- pos: 대체를 시작할 위치.
- len: 대체할 부분 문자열의 길이.
- str: 대체할 문자열.
예제
#include <iostream>
#include <string>
int main() {
std::string s = "Hello, world!";
s.replace(7, 5, "C++");
std::cout << s << std::endl; // 출력: Hello, C++!
return 0;
}
regex_replace 함수
regex_replace 함수는 정규 표현식을 사용하여 문자열의 패턴을 대체할 때 사용됩니다. 이 함수는 regex 라이브러리의 일부이며, 더 복잡한 패턴 매칭과 대체 작업을 수행할 수 있습니다.
정의
template< class Traits, class Alloc, class charT, class ST >
std::basic_string<charT, ST, Alloc> regex_replace(const std::basic_string<charT, ST, Alloc>& s, const std::basic_regex<charT, Traits>& re, const std::basic_string<charT, ST, Alloc>& fmt);
- s: 입력 문자열.
- re: 정규 표현식.
- fmt: 대체할 문자열 (서식 문자열).
예제1
#include <iostream>
#include <string>
#include <regex>
int main() {
std::string s = "I have 2 apples and 10 oranges.";
std::regex re("\\d+"); // 숫자를 찾는 정규 표현식
std::string result = std::regex_replace(s, re, "many");
std::cout << result << std::endl; // 출력: I have many apples and many oranges.
return 0;
}
예제2
#include <string>
#include <vector>
#include <regex>
using namespace std;
string solution(string rny_string) {
string answer = regex_replace(rny_string, regex("m"), "rn");
return answer;
}
2. 복잡성
- replace 함수는 비교적 간단하며, 정규 표현식이 필요하지 않은 경우에 사용됩니다.
- regex_replace 함수는 더 복잡하며, 정규 표현식을 사용하여 패턴 매칭을 수행할 수 있습니다. 복잡한 문자열 변환 작업에 유용합니다.
3. 성능
- replace 함수는 단순한 위치 기반 대체 작업을 수행하므로 더 빠르고 성능이 뛰어납니다.
- regex_replace 함수는 정규 표현식을 처리해야 하므로 상대적으로 더 느릴 수 있습니다. 그러나 패턴 매칭이 필요한 경우에는 유용합니다.
이 두 함수는 각기 다른 상황에서 유용하게 사용될 수 있습니다. 단순한 문자열 대체 작업에는 replace를, 복잡한 패턴 매칭이 필요한 경우에는 regex_replace를 사용하는 것이 적합합니다.
반응형
'C++ 공부' 카테고리의 다른 글
[C++]while 조건문에 '>>' 가 있는 경우는? (0) | 2024.07.28 |
---|---|
[C++]String 의 find 함수 정의, string::npos 란?(프로그래머스-문자열 바꿔서 찾기) (0) | 2024.07.28 |
[C++]Sort 함수란? 정렬, 오름차순, 내림차순 (0) | 2024.07.27 |
[C++]Vector 와 Array 비교 (0) | 2024.07.27 |
[C++]Vector 정의, push_back 등 주요 함수 정리 (0) | 2024.07.27 |
댓글