wcstok() — 와이드 문자 스트링 토큰화

형식

#include <wchar.h>
wchar_t *wcstok(wchar_t *wcs1, const wchar_t *wcs2, wchar_t **ptr);

언어 레벨

ANSI

스레드세이프

와이드 문자 함수

자세한 정보는 와이드 문자의 내용을 참조하십시오.

설명

wcstok() 함수는 wcs1을 0개 이상의 토큰 시리즈로 읽고 wcs2wcs1에서 토큰의 분리문자 역할을 하는 와이드 문자 세트로 읽습니다. wcstok() 함수에 대한 호출 순서는 wcs1 내 토큰을 찾습니다. 토큰은 wcs2에서 하나 이상의 분리문자로 분리할 수 있습니다. 세 번째 인수는 wcstok() 함수가 동일한 스트링을 계속 스캔하는 데 필요한 정보를 저장하는 경우 제공하는 와이드 문자 포인터를 가리킵니다.

wcstok() 함수가 와이드 문자 스트링 wcs1에 대해 처음 호출된 경우 선행 분리문자를 건너뛰고 wcs1에서 첫 번째 토큰을 검색합니다. wcstok() 함수는 첫 번째 토큰에 대한 포인터를 리턴합니다. wcs1에서 다음 토큰을 읽으려면 첫 번째 매개변수(wcs1)로 NULL을 포함하는 wcstok() 함수를 호출합니다. 이 NULL 매개변수로 인해 wcstok() 함수는 이전 토큰 스트링에서 다음 토큰을 검색합니다. 각 분리문자는 토큰을 종료하는 널 문자로 대체됩니다.

wcstok() 함수는 첫 번째 매개변수가 널이고 세 번째가 수정되지 않은 포인터 값인 후속 호출이 이전에 리턴된 토큰 직후 검색을 시작하도록 항상 포인터 ptr에 충분한 정보를 저장합니다. 분리문자 세트(wcs2)를 호출마다 변경할 수 있습니다.

리턴값

wcstok() 함수는 토큰의 첫 번째 와이드 문자에 대한 포인터 또는 토큰이 없는 경우 널 포인터를 리턴합니다. 토큰 스트링이 동일한 나중 호출에서 wcstok() 함수는 스트림에서 다음 토큰에 대한 포인터를 리턴합니다. 토큰이 더 없으면 wcstok() 함수는 널을 리턴합니다.

이 예는 wcstok() 함수를 사용하여 와이드 문자 스트링 str1에서 토큰을 찾습니다.
#include <stdio.h>
#include <wchar.h>
 
int main(void)
{
   static wchar_t str1[] = L"?a??b,,,#c";
   static wchar_t str2[] = L"\t \t";
   wchar_t *t, *ptr1, *ptr2;
 
   t = wcstok(str1, L"?", &ptr1);    /* t points to the token L"a"  */
   printf("t = '%ls'\n", t);
   t = wcstok(NULL, L",", &ptr1);    /* t points to the token L"?b" */
   printf("t = '%ls'\n", t);
   t = wcstok(str2, L" \t,", &ptr2); /* t is a null pointer         */
   printf("t = '%ls'\n", t);
   t = wcstok(NULL, L"#,", &ptr1);   /* t points to the token L"c"  */
   printf("t = '%ls'\n", t);
   t = wcstok(NULL, L"?", &ptr1);    /* t is a null pointer         */
   printf("t = '%ls'\n", t);
   return 0;
}
 
   /********************************************************************
      The output should be similar to:
 
          t = 'a'
          t = '?b'
          t = ''
          t = 'c'
          t = ''
   ********************************************************************/