요즘은 ATL에서 CString을 지원하면서 std::string을 사용할 일이 줄어들긴 했지만, 여전히 유용한 클래스임에는 틀림없다.

가끔 MFC등 윈도용으로 개발된 클래스를 포팅해야 할 때 제일 문제가 되는 것 중에 하나가 CString이기도 한데 -_-
여튼. std::string에서 아쉬운 부분중에 하나인 ReplaceAll 함수를 간단히 구현해 보자.

   

#include <string>

 

typedef std::basic_string<TCHAR> _tstring;

 

_tstring replace_all( const _tstring& source, const _tstring& pattern, const _tstring& replace )

{

_tstring result = source;

_tstring::size_type pos = 0;

_tstring::size_type offset = 0;

_tstring::size_type pattern_len = pattern.size();

_tstring::size_type replace_len = replace.size();

 

while ( ( pos = result.find( pattern, offset ) ) != _tstring::npos )

{

result.replace( result.begin() + pos, result.begin() + pos + pattern_len, replace );

offset = pos + replace_len;

}

return result;

}

 

출처 : http://blog.daum.net/studiocoma/6800925

+ Recent posts