한국어
C/C++

strcmp, wcscmp, _tcscmp

pjk 2014.07.18 18:21 조회 수 : 6632

strcmp, wcscmp, _tcscmp


스트링을 비교하는 함수들이다.

다 같은 함수인데 스트링설정에 따라 골라쓰면 된다.

즉 MBCS일때는 strcmp를 쓰면되고, UNICODE 일때는 wcscmp를 쓴다.

이것저거 신경쓰기 귀찮으면 그냥 _tcscmp를 쓰면 되는데, 이건 아마 MFC를 쓸때 TCHAR.h가 선언되어 있다는 가정하에 사용해야 될거다.

보통 VC++을 사용해서 개발한다면 그냥 _tcscmp를 쓰면된다. ( char 대신 TCHAR쓰면되고... )
 

반환 값
--------------------------------------------------------------------------------
이러한 함수의 반환 값은 string1에서 string2의 사전 관계를 나타냅니다.  

값      문자열 1과 문자열 2의 관계  
 
< 0      string1이 string2보다 작습니다.  
 
0        string1은 string2와 동일합니다.  
 
> 0      string1이 string2보다 큽니다.  
 
오류에서, _mbscmp 는 _NLSCMPERROR 를 반환합니다, 문자열에 정의 된.H와 MBSTRING입니다.H.

 

사용법은 이렇다.

char string1[] = "string1";
char string2[] = "string2";

int result = strcmp( string1, string2 );

result > 0 이면 string1 > string2 이다.
result < 0 이면 string1 < string2 이다.
result = 0 이면 string1 = string2 이다.

 

 

<흔히하는 실수>
 

if( strcmp( string1, string2 ) )
{
// 스트링이 같을때의 액션..
}

 
이렇게 하면 클난다.

위에서 보면 같을때는 리턴값이 0이다.

이런 버그는 찾기도 힘들다.

미치는거다..

 
if( 0 == strcmp( string1, string2 ) )

{
// 스트링이 같을때의 액션..
}

이렇게 써야된다.