strtok 함수

less than 1 minute read

strtok 함수

  • 문자열을 특정 문자로 구분하여 파싱(parsing)하는 함수
#include <cstring>

char* strtok(char* str, char* delimiter)
  • 구분자(delimiter)를 발견하면 해당 인덱스의 문자를 ‘\n’으로 바꾸며 구분자 이전까지의 부분 문자열을 반환한다. (부분 문자열의 맨 앞 문자의 주소값)
  • 탐색 중에 문자열의 끝에 도달하면 NULL 포인터를 반환한다.
  • strtok 함수는 단독으로 모든 문자열을 구분하는 함수는 아니다. 아래와 같은 반복문을 이용하여 문자열을 처음부터 끝까지 파싱(parsing)할 수 있다.
char str[] = "Bokyoung Kim 25";
char* ptr = strtok(str, " ");
while(ptr != NULL){
    printf("%s\n", ptr);
    ptr = strtok(NULL, " ");
}
  • strtok를 처음 실행할 때 첫번째 인자에는 원하는 문자열을 넣어준다.
  • 다음 실행부터 첫번째 인자로 NULL을 넣어주면, 해당 함수는 기존의 문자열에서 찾았던 구분자 다음 문자부터 해당 구분자를 찾아 탐색을 진행한다.
  • 최종 반환되는 포인터 값이 NULL이 나올 때까지 반복문을 반복하면, 전체 문자열에서 구분자에 따라 문자열을 파싱할 수 있다.

주의

  • string 클래스를 이용하는 경우 해당 함수는 사용할 수 없다. 왜냐하면 strtok 함수의 원형을 보면 알 수 있듯이 C-style 문자열인 포인터를 첫번재 매개인자로 받기 때문이다.
  • string 클래스를 이용하는 경우 다른 방법을 찾아야한다.

Categories:

Updated:

Leave a comment