본문 바로가기

카테고리 없음

[C++] 문자열 조작함수 - strstr()

void main()
{
	char *str_1 = "xyzfind findxyz";
	char *str_2 = "find";
	int cnt = 0;
	char *p;

	for(;; str_1++)
	{
		if((p = strstr(str_1, str_2)) != NULL)
		{
			cnt++;
			str_1 = p;
		}
		else break;
	}
	cout << "찾은 'find'의 갯수 : " << cnt << endl;
}

프로그램 실행화면


문자열 조작함수로 strstr()이라는 녀석이 있다. 이 함수는 문자열 속에서 찾고자 하는 녀석, 즉 검색을 해서 매칭되는 문자열이 있다면 그 문자열의 위치를 반환해 주는 녀석이다.


예제를 보면 조금 더 쉽게 이해를 할 수있다. str_1에는 긴 문자열이 저장되어 있고 str_2에는 검색하고자 하는 문자열이 들어 있다. 포인터가 들어가 있기 때문에 조금 어렵게 느껴질 수도 있다.


반복문의 조건식도 없고 조금 이상해 보이지만 반복의 조건은 따로 없다. while(1)을 쓰는 것이 더 자연스럽게 보일 수도 있겠다.


strstr()의 return 값이 널이라면 검색된 문자열이 없기에 이것이 반복문을 끝내는 조건이 된다. 만약 문자열을 찾았다면 str_1++을 하여주어 같은 녀석이 검색되지 않게 하여준다.


"find~~~" 이 문자열이 "ind~~~"가 되는 것이다.