[MFC] CString 문자열 교체하는 함수 - Replace

MFC/문자열 함수2014. 7. 2. 01:00



※요약
CString::Replace : 문자 또는 문자열을 교체한다.

※특징
문자나 문자열에 '\'가 있을 경우, '\'를 하나 더 붙여줘야 한다.
이유는 '\'는 Escape문자이기 때문이다.

※함수 원형 및 설명
int Replace( TCHAR chOld, TCHAR chNew );
//chOld : 교체될 문자
//chNew : 교체할 문자
//반환값 : 교체한 문자 또는 문자열의 수

int Replace( LPCTSTR lpszOld, LPCTSTR lpszNew );
//lpszOld : NULL로 종결되는 교체될 문자
//lpszNew : NULL로 종결되는 교체할 문자
//반환값 : 교체한 문자 또는 문자열의 수

※예제

#include <atlstr.h>       //CString

#define print( str ) printf( "%s\n", str )

int main( )
{
	CString strText1;
	CString strText2;

	strText1 = "String";
	strText2 = "C⁄C++";

	print( strText1 );
	print( strText2 );

	strText1.Replace( "Str", "Play" );
	strText2.Replace( "C++", "Java" );

	print( strText1 );
	print( strText2 );

	return 0;
}


※결과





작성자

Posted by 사용자 오뇽

태그

관련 글

댓글 영역

  • 프로필 사진
    reinbute
    2014.09.27 11:17

    TCHAR str[1024];
    _tscanf(_T("%s"), str);
    CString ab=str;
    ab.Replace(".", " ");
    _tprintf(_T("%s"),ab);
    ㅜㅜ질문하나만드리겠습니다. 여기서 지금제가 ab.replace 여기에서 .에서 오류가 나고있는데 뭐가문제인지요?

    • 프로필 사진
      2014.09.27 11:32 신고

      프로젝트 속성이 유니코드 아닌가요?
      ab.Replace(".", " ");를 아래와 같이 바꿔보세요.


      예제 1. ab.Replace( _T("."), _T(" ") );
      예제 2. ab.Replace( TEXT("."), TEXT(" ") );
      예제 3. ab.Replace( L".", L" " );

  • 프로필 사진
    reinbute
    2014.09.27 11:46

    우와...정말이네요/.감사합니다 그런데 질문하나만 더 드려도되나요?
    CTime이랑 CTimeSpan 클래스 이용해서 1000일째되는 기념일을 계산하는건데 CTime::operator+함수를 사용하라는데..함수의사용법을 전혀모르겠네요

    • 프로필 사진
      2014.09.27 12:12 신고

      CTime이랑 CTimeSpan 이용해야 하면 아래처럼 해보세요~
      아래는 현재 날짜에 1000일을 더한 날짜를 구하는 겁니다.

      CTime timeCurrent;
      timeCurrent = CTime::GetCurrentTime();

      CTimeSpan t( 1000, 0, 0, 0 );

      timeCurrent += t;

      CString str = timeCurrent.Format( TEXT("%Y-%m-%d") );

      ----------------------------------

      여기서는
      const CTime& operator+=(CTimeSpan timeSpan) 사용한거에요.