Tech & IT/프로그래밍

[Scrap] C++ ReplaceAll 함수

해피콧 2008. 9. 17. 11:31
'); }
'); }
출처링크 : http://ljh131.tistory.com/88

C++ STL의 string을 이용해서 구현한 replace all 함수입니다.
마지막 두줄의 assert를 보면 알 수 있듯이, 이 함수엔 문자열이 재귀적으로 치환되는 문제가 없습니다.

  1. #include <iostream>  
  2. #include <string>  
  3. #include <cassert>  
  4.   
  5. using namespace std;  
  6.   
  7. string replaceAll(const string &str, const string &pattern, const string &replace)  
  8. {  
  9.     string result = str;  
  10.     string::size_type pos = 0;  
  11.     string::size_type offset = 0;  
  12.   
  13.     while((pos = result.find(pattern, offset)) != string::npos)  
  14.     {  
  15.         result.replace(result.begin() + pos, result.begin() + pos + pattern.size(), replace);  
  16.         offset = pos + replace.size();  
  17.     }  
  18.   
  19.     return result;  
  20. }  
  21.   
  22. int main()  
  23. {  
  24.     assert(replaceAll("abcdefg""bc""de") == "adedefg");  
  25.     assert(replaceAll("abc\nabc\nabc""\n""") == "abcabcabc");  
  26.     assert(replaceAll("aaabbbaaa""aaa""1") == "1bbb1");  
  27.     assert(replaceAll("ababab ababab""ab""1") == "111 111");  
  28.     assert(replaceAll("abcdefg""gf""de") == "abcdefg");  
  29.     assert(replaceAll("aaa""a""aa") == "aaaaaa");  
  30.     assert(replaceAll("11aa11aa""1""11") == "1111aa1111aa");  
  31.   
  32.     return 0;  
  33. }   

'Tech & IT > 프로그래밍' 카테고리의 다른 글

"MFC에 RichEdit 1.0 컨트롤 사용"에 대한 잘못된 설명서  (0) 2008.11.19
간단 API Tip  (0) 2008.11.18
CPP Unit 관련 자료  (0) 2008.10.31
Win32 환경에서의 타이머 종류  (0) 2008.10.23
HexToString code조각  (0) 2008.09.08