요즘은 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
'C/C++언어 > STL' 카테고리의 다른 글
STL 컨테이너(map, multimap) (0) | 2010.07.04 |
---|---|
STL 숙제.. 렌터카 2번째.. (0) | 2008.05.02 |
STL 강좌입니다. (0) | 2007.09.06 |
"C++ STL 실전 프로그래밍 예제 소스"중 일부 (0) | 2007.03.20 |