Namespaces
Variants

std:: wcstok

From cppreference.net
헤더 파일에 정의됨 <cwchar>
wchar_t * wcstok ( wchar_t * str, const wchar_t * delim, wchar_t ** ptr ) ;

str 이 가리키는 널 종료 와이드 문자열에서 다음 토큰을 찾습니다. 구분 문자는 delim 이 가리키는 널 종료 와이드 문자열로 식별됩니다.

이 함수는 동일한 문자열에서 연속적인 토큰을 얻기 위해 여러 번 호출되도록 설계되었습니다.
  • 만약 str ! = nullptr 인 경우, 이 호출은 해당 와이드 문자열에 대한 첫 번째 std::wcstok 호출로 간주됩니다. 함수는 delim 에 포함되지 않는 첫 번째 와이드 문자를 검색합니다.
  • 해당하는 와이드 문자를 찾지 못한 경우, str 내에 토큰이 전혀 존재하지 않는 것이며, 함수는 null 포인터를 반환합니다.
  • 해당하는 와이드 문자를 찾은 경우, 이것이 토큰의 시작점 이 됩니다. 함수는 그 지점부터 delim 에 포함 되는 첫 번째 와이드 문자를 검색합니다.
  • 해당하는 와이드 문자를 찾지 못한 경우, str 에는 단 하나의 토큰만 존재하며, 이후 std::wcstok 호출은 null 포인터를 반환합니다.
  • 해당하는 와이드 문자를 찾은 경우, 이것이 null 와이드 문자 L ' \0 ' 대체되고 , 파서 상태(일반적으로 다음 와이드 문자를 가리키는 포인터)가 사용자가 제공한 위치 * ptr 에 저장됩니다.
  • 그런 다음 함수는 토큰의 시작점을 가리키는 포인터를 반환합니다.
  • 만약 str == nullptr 인 경우, 이 호출은 std::wcstok 의 후속 호출로 간주됩니다: 함수는 동일한 * ptr 를 사용하여 이전 호출에서 중단된 지점부터 계속 진행합니다. 이 동작은 마지막으로 발견된 토큰 다음에 오는 와이드 문자를 가리키는 포인터가 str 로 전달된 경우와 동일합니다.

목차

매개변수

str - 토큰화할 null 종료 와이드 문자열에 대한 포인터
delim - 구분자를 식별하는 null 종료 와이드 문자열에 대한 포인터
ptr - wchar_t * 타입의 객체에 대한 포인터로, wcstok이 내부 상태를 저장하는 데 사용함

반환값

다음 토큰의 시작을 가리키는 포인터 또는 더 이상 토큰이 없을 경우 null 포인터입니다.

참고

이 함수는 파괴적입니다: 문자열 str 의 요소들에 L ' \0 ' 문자들을 기록합니다. 특히, 와이드 문자열 리터럴은 std::wcstok 의 첫 번째 인수로 사용될 수 없습니다.

std::strtok 과 달리, 이 함수는 정적 저장소를 갱신하지 않습니다: 파서 상태를 사용자가 제공한 위치에 저장합니다.

대부분의 다른 토크나이저와 달리, std::wcstok 에서는 각 후속 토큰에 대한 구분자가 다를 수 있으며, 이전 토큰의 내용에 따라 달라질 수도 있습니다.

예제

#include <cwchar>
#include <iostream>
int main()
{
    wchar_t input[100] = L"A bird came down the walk";
    wchar_t* buffer;
    wchar_t* token = std::wcstok(input, L" ", &buffer);
    while (token)
    {
        std::wcout << token << '\n';
        token = std::wcstok(nullptr, L" ", &buffer);
    }
}

출력:

A
bird
came
down
the
walk

참고 항목

바이트 문자열에서 다음 토큰을 찾음
(함수)