이번 글에서는 CString의 SpanIncluding과 SpanExcluding을 사용하여 포함 문자열, 포함하지 않는 문자열을 추출하는 방법에 대해 알아보겠습니다.
CString을 사용하기 위해서는 아래 함수를 include 해야합니다.
헤더 | |
cstringt.h | MFC 전용 문자열 개체 |
atlstr.h | 비 MFC 문자열 개체 |
SpanIncluding은 포함, SpanExcluding은 미포함하는 문자열을 추출합니다.
예를 들어 “0123456789”에서 SpanIncluding 함수를 사용하여 0 ~ 4까지 문자열만 추출할 수 있습니다.
위 두 함수는 문자열에 특정 문자가 들어있는지, 들어 있지 않은지 확인할 때 편하게 사용할 수 있습니다.
예시 코드를 보겠습니다.
CString strUserInput = _T("0123456789");
CString strInclude = strUserInput.SpanIncluding( _T( "012" ) );
CString strExclude = strUserInput.SpanExcluding(_T("678"));
TRACE( _T( "%s\n" ), strInclude ); // 012
TRACE( _T( "%s\n" ), strExclude ); // 012345
SpanIncluding( _T(“012”) )을 실행하면 “012”까지 포함되어 문자열을 반환합니다. 그래서 strInclude에는 “012”가 담겨져 있습니다.
SpanExcluding( _T(“678”) )을 실행하면 “678”이 포함되지 않는 “012345”까지 반환합니다. 그래서 strExclude에는 “012345”가 담겨져 있습니다.
사용자에게 숫자만 입력 받고 싶으면 아래와 같이 활용할 수 있습니다.
CString strUserInput = _T( "abc_123" );
CString strOnlyNumber = strUserInput.SpanIncluding( _T( "0123456789" ) );
if ( strOnlyNumber.Compare(strUserInput) != 0 )
{
TRACE( _T( "숫자 이외에 다른 문자가 있습니다.\n") );
}
사용자에게 소문자 알파벳은 입력 받고 싶지 않다면 아래와 같이 코딩하여 사용가능합니다.
CString strUserInput = _T( "ABCdeFG" );
CString strExceptLower = strUserInput.SpanExcluding( _T( "abcdefghijklmnopqrstuvwxyz" ) );
if ( strExceptLower.Compare( strUserInput ) != 0 )
{
TRACE( _T( "알파벳 소문자가 입력되어 있습니다.\n" ) );
}