아래는 strtok() 함수를 이용해서 토큰을 가져오는 코드이다.
strtok()은 입력문자열(첫번째인자)에서 구분자문자(두번째인자)로 구분될 수 있는 토큰을 찾아 준다.
strtok()를 한번 호출하면 입력문자열의 첫번째 토큰을 찾아준다.
그렇다면 두번째, 세번째... 문자열의 끝까지 토큰을 계속해서 얻어오려면 어떻게 해야 될까?
아래 코드처럼 연속 토큰을 추출하려면 처음 strtok() 로 첫번째 토큰을 찾고
그 다음부터는 strtok(NULL, 구분자)로 호출하여 연속되는 토큰을 계속 찾을 수 있다.
여기서 한가지 의문의 생긴다... 입력문자열에 NULL 값을 집어넣는데 어떻게 토큰을 계속 찾을 수 있을까?
strtok() 내부에서는 토큰을 찾고 찾은 토큰 바로 뒤의 문자를 NULL 로 만들어 버린다.
처음 strtok() 를 호출할 때 strtok() 함수 내부에서 첫번째 토큰을 리턴하기 전 NULL 다음부터의 문자열을 기억하고 있는다.
두번째 strtok() 를 호출할 때 입력문자열 대신 NULL 값을 주면 바로 이전에 사용되었던 문자열을 끄집어내서 사용하게 된다.
'컴퓨터공학 기초 > C.C++' 카테고리의 다른 글
assert (0) | 2010.12.12 |
---|---|
문자열 검색 함수 - strchr(), strrchr(), strstr(), strspn(), strcspn(), strpbrk() (0) | 2010.10.11 |
copy()와 특별한 이터레이터 (0) | 2010.10.08 |
이터레이터(iterator) (0) | 2010.10.08 |
C++ 문자열 자르기 (string) (0) | 2010.10.03 |