[MFC] CString 공백 및 지정 문자/문자열 제거 하는 함수 - TrimLeft, TrimRight

MFC/문자열 함수2014. 10. 6. 01:00

※요약
CString::TrimLeft : 문자열의 왼쪽에서 공백이나 탭, 개행 문자 또는 지정한 문자/문자열을 제거한다.
CString::TrimRight : 문자열의 오른쪽에서 공백이나 탭, 개행 문자 또는 지정한 문자/문자열을 제거한다.

※특징
TrimLeft, TrimRight함수는 인자를 넘기지 않을 경우 각각 문자열 좌우측에서 공백, 탭('\t'), 개행 문자('\n')를 제거한다.
인자를 넘길 경우 넘겨진 문자나 문자열을 제거하는데, 이때는 인자로 넘겨진 것만 제거된다.
TrimLeft, TrimRight함수는 문자열의 좌우측에서만 작업을 하므로, 문자열 중간에서 작업하려면
CString::RemoveCString::Replace함수를 적절히 이용하면 된다.

보통 필자는 에디트 컨트롤 등으로 사용자로부터 값을 넘겨받을 때, 
"  오늘은 OpenGL을 해야겠다.  "
상기와 같이 문자열 중간의 공백은 냅두고, 문자열 좌우측 끝에서만 공백 등을 제거할 때 사용한다.

※함수 원형 및 설명
void TrimLeft( );
void TrimRight( );
void TrimLeft( TCHAR chTarget );
void TrimRight( TCHAR chTarget );
void TrimLeft( LPCTSTR lpszTargets );
void TrimRight( LPCTSTR lpszTargets );
//chTarget : 문자열에서 제거할 문자
//lpszTargets : 문자열에서 제거할 문자셋
※예제
#include <atlstr.h>       //CString

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

int main( )
{
	CString strText11 = " Visual Studio 2013 ";
	print( strText11 );

	//Trim함수 사용시 인자를 사용하지 않을 경우 공백, 탭 개행 문자를 지운다.
	strText11.TrimLeft( );
	print( strText11 );
	strText11.TrimRight( );
	print( strText11 );
	
	//------------------------------------------------------------------------------

	CString strText22 = " OpenGL, OpenCV ";
	print( strText22 );

	//Trim함수 사용시 인자를 사용할 경우 공백, 탭 개행 문자말고 지정한 문자만 지운다.
	//아래는 Left에 "Op"가 있을 경우, Right에 "CV"가 있을 경우 지우라고 했는데
	//공백이 있으므로 지워지지 않는다.
	strText22.TrimLeft( "Op" );
	print( strText22 );
	strText22.TrimRight( "CV" );
	print( strText22 );

	return 0;
}


※결과





작성자

Posted by 사용자 오뇽

태그

관련 글

댓글 영역