※요약
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;
}


※결과





 


※요약
CString::Remove : 지정한 특정 문자를 모두 제거한다.

※특징
문자열은 지정이 안되고 문자만 지정되므로 알아도 잘 사용하지 않는 함수다.
필자의 경우, 보통 CString::Replace를 더 많이 사용한다.

※함수 원형 및 설명
int Remove( TCHAR chRemove );
//chRemove : 제거할 문자
//반환값 : 제거한 문자의 수

※예제
#include <atlstr.h>       //CString

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

int main( )
{
	CString strText = "+V+i+s+u+a+l St+u+d+i+o C++ 20+13";

	print( strText );

	strText.Remove( '+' );
	print( strText );

	return 0;
}



※결과

아래 예제에서는 문자 '+'를 제거한다.

한 번의 Remove함수 호출로 모든 '+' 문자가 제거 되었다.




 

※요약
CString::Delete : 문자나 문자열을 삭제한다. 삭제하려는 위치와, 삭제하고자 하는 길이를 지정할 수 있다.

※특징
고정 길이의 문자열에서 필요 없는 부분을 삭제할 때 좋다.
예를 들어 아래와 같이 날짜시간 형식의 고정 길이 문자열이 있다고 할 때
날짜만 없애거나, 시간만 없애는 등 특정 부분을 지울때 사용.
2014-09-29 07:05
2014-09-29 08:15
2014-09-29 09:42
2014-09-29 10:18
2014-09-29 11:23

필자는 Delete함수를 알기 전까지는 보통 CString::Mid를 많이 사용하였으며, 삭제 말고 삽입(CString::Insert)도 알아두면 좋음.

※함수 원형 및 설명
int Delete( int nIndex, int nCount = 1 );
//nIndex : 문자가 삭제될 시작 위치. 첫 문자의 위치는 0
//nCount : 삭제될 문자의 수
//반환값 : 삭제된 후의 문자열 길이

※예제
#include <atlstr.h>       //CString

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

int main( )
{
	CString strText = "Visual Studio C++ 2013";

	print( strText );

	strText.Delete( 14, 4 );
	print( strText );

	return 0;
}


※결과

문자열 "Visual Studio C++ 2013" 중에서 "C++ " 부분을 삭제하여 "Visual Studio 2013" 만 출력되게 하였다.




 

※요약
CString::Insert : 문자 또는 문자열을 원하는 위치에 삽입한다.

※특징
문자나 문자 삽입 시, 맨 앞에 삽입하려면 0으로 하고 
맨 뒤에 추가하려면 문자열의 길이로 하면 된다.
필자는 Insert함수를 알기 전까지는 보통 CString::Mid를 이용하였으며, 삽입 말고 삭제(CString::Delete)도 알아두면 좋음.

※함수 원형 및 설명
int Insert( int nIndex, TCHAR ch );
//nIndex : 문자가 삽입될 위치 첫 문자의 위치는 0
//ch : 삽입될 단일 문자
//반환값 : 문자열의 길이

int Insert( int nIndex, LPCTSTR pstr );
//nIndex : 문자가 삽입될 위치 첫 문자의 위치는 0
//pstr : NULL로 끝나는 삽입될 문자열
//반환값 : 문자열의 길이

※예제
#include <atlstr.h>       //CString

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

int main( )
{
	CString strText = "Visual2013";

	print( strText );

	strText.Insert( 6, " Studio " );
	print( strText );

	return 0;
}


※결과

"Visual2013"이라는 문자열 중간에 " Studio "라고 삽입한 결과로 "Visual Studio 2013"이 나온 걸 알 수 있다.






※요약
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;
}


※결과







※요약
Compare : 대소문자를 구분하여 문자열을 비교한다.
CompareNoCase : 대소문자를 구분하지 않고 문자열을 비교한다.

※특징
operator ==, !=, <, >, <=, >= 도 대소문자를 구분하여 CString의 문자열을 비교할 수 있으며
C언어 함수 중 strcmp, strncmp, stricmp, strnicmp 등과 비슷하다.
또 한 비교는 아스키코드를 기준으로 비교하므로 아스키코드표를 참고하면 된다.

※함수 원형 및 설명
int Compare( LPCTSTR lpsz ) const;
int CompareNoCase( LPCTSTR lpsz ) const;
//lpsz : NULL로 종결되는 비교할 문자열
//반환값 : 문자열이 lpsz보다 작을 경우 -1
//         문자열이 lpsz와 같을 경우 0
//         문자열이 lpsz보다 큰 경우 1

※예제

#include <atlstr.h>       //CString

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

int main( )
{
	CString strText1;
	CString strText2;
	CString strText3;

	strText1 = "ABC";

	//Compare - 대소문자 구분
	print( strText1.Compare( "ABC" ) );
	print( strText1.Compare( "abc" ) );
	print( strText1.Compare( "123" ) );

	//CompareNoCase - 대소문자 구분 안 함
	print( strText1.CompareNoCase( "ABC" ) );
	print( strText1.CompareNoCase( "abc" ) );

	return 0;
}


※결과

첫 번째는 ABC == ABC 이므로 0

두 번째는 ABC < abc이므로 -1

세 번째는 ABC > 123 이므로 1

네 번째, 다섯 번째는 대소문자를 구분하지 않음으로 둘 다 0






※요약
GetLength : CString 개체의 문자열 길이를 구한다.

※특징
C언어 함수 중 strlen 함수와 비슷하다.

※함수 원형 및 설명
int GetLength( ) const;
//반환값 : 문자열의 길이


※예제

#include <atlstr.h>       //CString

#define print( nNum ) printf( "%d\n", nNum )

int main( )
{
	CString strText1;
	CString strText2;
	CString strText3;

	strText1 = "abcdef13579";
	strText2 = "12345";
	strText3 = "TestText";
	
	print( strText1.GetLength( ) );
	print( strText2.GetLength( ) );
	print( strText3.GetLength( ) );

	return 0;
}


※결과

11

5

8







※요약
Empty : CString 개체의 문자열을 비운다.
IsEmpty : CString 개체가 갖고 있는 문자열이 비어있는지 조사한다.

※특징
Empty 함수는 CString 개체의 문자열을 비우며 내부적으로 할당된 메모리를 해제한다.

※함수 원형 및 설명
void Empty( );
BOOL IsEmpty( ) const;
//반환값 : 문자열이 비어있으면 TRUE, 비어 있지 않으면 FALSE를 반환

※예제
#include <atlstr.h>       //CString

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

int main( )
{
	CString strText;

	strText = "abcd13579";
	print( strText );

	if( strText.IsEmpty( ) != TRUE )	//strText에 문자열이 있나 확인한다.
	{
		strText.Empty( );				//strText에 문자열이 있으면 지운다.
		print( strText );
	}

	return 0;
}


※결과





※요약
CString 함수중 문자열을 뒤집는 함수 MakeReverse에 대한 내용이다.

MakeReverse : 문자열을 거꾸로 뒤집는다.

※특징
C언어 함수 중 strrev 함수와 비슷하다.


함수 원형 및 설명

void MakeReverse( );


예제

#include <atlstr.h>       //CString

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

int main( )
{
	CString strText;

	strText = "13579";
	strText.MakeReverse( );
	print( strText );

	strText = "MFC";
	strText.MakeReverse( );
	print( strText );

	return 0;
}


※결과






CString 문자열 대문자나 소문자로 변환하는 함수 MakeUpper() 와 MakeLower() 에 대한 내용이다.


※요약

MakeUpper : 모든 문자열을 대문자로 변환한다.

MakeLower : 모든 문자열을 소문자로 변환한다.



※특징

C언어 중 strupr, strlwr 함수와 비슷하다.



※함수 원형 및 설명

void MakeUpper( );
void MakeLower( );



※예제

#include <atlstr.h>       //CString

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

int main( )
{
	CString strText1 = "ABCDE";
	CString strText2 = "abcde";
	CString strText3 = "a1b2c3d4e";

	strText1.MakeLower( );
	print( strText1 );		//abcde

	strText2.MakeUpper( );
	print( strText2 );		//ABCDE

	strText3.MakeUpper( );
	print( strText3 );		//A1B2C3D4E

	return 0;
}




+ Recent posts