std::string 을 처음으로 접해보지 않은 저로서는 그냥 쓰다 보면
다른 FrameWork에서는 그냥 제공하는 함수도 없다는 점이 불편하네요.
물론 최신 라이브러리에서 제공은 하는지는 모르지만 가끔은 이전 버젼에서 작업을 해야 되서
문자열 전체에서 특정 문자를 변경해야 하는 작업입니다.
일단 소스를 보시죠~
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | void ReplaceStdString(std::string& sOrg, const char* szOld, const char* szNew) { std::string::size_type nPos = 0; std::string::size_type nOffset = 0; std::string sPattern = szOld; std::string sReplace = szNew; while ((nPos = sOrg.find(sPattern, nOffset)) != std::string::npos) { sOrg.replace(sOrg.begin() + nPos, sOrg.begin() + nPos + sPattern.size(), sReplace); nOffset = nPos + sReplace.size(); } } |
<위 코드는 Visual Studio 2008 Window 10 64bit 환경에서 빌드 되었습니다 >
위 소스를 보시면 sOrg라는 변수에 전체 문자열이 들어오고 szOld는 변경할 문자
szNew는 변경 되어야할 문자를 입력 받습니다.
전체 문자열을 뒤지면서 하나씩 찾아 변경하는 로직입니다.
std::string 에서 제공하는 replace 는 시작 index와 끝 index를 찾아 변경될 문자열을 찾아 변경하는 함수 입니다.
그럼 ^^
댓글 없음:
댓글 쓰기