-
C++ STL replaceAll. string 공백/개행 등 패턴 문자 제거프로그래밍/c++ 2015. 6. 10. 11:39반응형
C++ STL의 string을 이용해서 구현한 replace all 함수입니다.
using namespace std;string replaceAll(const string &str, const string &pattern, const string &replace){string result = str;string::size_type pos = 0;string::size_type offset = 0;while((pos = result.find(pattern, offset)) != string::npos){result.replace(result.begin() + pos, result.begin() + pos + pattern.size(), replace);offset = pos + replace.size();}return result;}int main(){assert(replaceAll("abcdefg", "bc", "de") == "adedefg");assert(replaceAll("abc\nabc\nabc", "\n", "") == "abcabcabc");assert(replaceAll("aaabbbaaa", "aaa", "1") == "1bbb1");assert(replaceAll("ababab ababab", "ab", "1") == "111 111");assert(replaceAll("abcdefg", "gf", "de") == "abcdefg");assert(replaceAll("aaa", "a", "aa") == "aaaaaa");assert(replaceAll("11aa11aa", "1", "11") == "1111aa1111aa");return 0;}마지막 두줄의 assert를 보면 알 수 있듯이, 이 함수엔 문자열이 재귀적으로 치환되는 문제가 없습니다.
반응형'프로그래밍 > c++' 카테고리의 다른 글
[c++11] std::weak_ptr의 사용 (0) 2015.07.23 c++11에 추가된 override 키워드와 필요성 (0) 2015.07.13 구글 C++ 스타일 가이드의 멤버 변수 네이밍 규칙을 따르지 않아야겠다고 생각한 이유 (3) 2015.05.23 c++ 코드 조각 가변 인자 템플릿을 이용한 벡터의 초기화 (0) 2015.04.15 unsinged int와 size_t (0) 2015.03.31