Namespaces
Variants

std:: wcstok

From cppreference.net
Definido en el encabezado <cwchar>
wchar_t * wcstok ( wchar_t * str, const wchar_t * delim, wchar_t ** ptr ) ;

Encuentra el siguiente token en una cadena ancha terminada en nulo apuntada por str . Los caracteres separadores son identificados por la cadena ancha terminada en nulo apuntada por delim .

Esta función está diseñada para ser llamada múltiples veces para obtener tokens sucesivos de la misma cadena.
  • Si str ! = nullptr , la llamada se trata como la primera llamada a std::wcstok para esta cadena ancha en particular. La función busca el primer carácter ancho que no está contenido en delim .
  • Si no se encuentra dicho carácter ancho, no hay tokens en str en absoluto, y la función devuelve un puntero nulo.
  • Si se encuentra dicho carácter ancho, este es el inicio del token . La función luego busca desde ese punto el primer carácter ancho que está contenido en delim .
  • Si no se encuentra dicho carácter ancho, str tiene solo un token, y las llamadas futuras a std::wcstok devolverán un puntero nulo.
  • Si se encuentra dicho carácter ancho, este es reemplazado por el carácter nulo L ' \0 ' y el estado del analizador (normalmente un puntero al siguiente carácter ancho) se almacena en la ubicación proporcionada por el usuario * ptr .
  • La función luego devuelve el puntero al inicio del token.
  • Si str == nullptr , la llamada se trata como una llamada posterior a std::wcstok : la función continúa desde donde se quedó en la invocación anterior con el mismo * ptr . El comportamiento es el mismo que si se pasara como str el puntero al carácter ancho que sigue al último token detectado.

Contenidos

Parámetros

str - puntero a la cadena ancha terminada en nulo que se va a tokenizar
delim - puntero a la cadena ancha terminada en nulo que identifica los delimitadores
ptr - puntero a un objeto de tipo wchar_t * , que es utilizado por wcstok para almacenar su estado interno

Valor de retorno

Puntero al inicio del siguiente token o puntero nulo si no hay más tokens.

Nota

Esta función es destructiva: escribe los L ' \0 ' caracteres en los elementos de la cadena str . En particular, un literal de cadena ancha no puede usarse como primer argumento de std::wcstok .

A diferencia de std::strtok , esta función no actualiza el almacenamiento estático: almacena el estado del analizador en la ubicación proporcionada por el usuario.

A diferencia de la mayoría de otros tokenizadores, los delimitadores en std::wcstok pueden ser diferentes para cada token subsiguiente, e incluso pueden depender del contenido de los tokens anteriores.

Ejemplo

#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);
    }
}

Salida:

A
bird
came
down
the
walk

Véase también

encuentra el siguiente token en una cadena de bytes
(función)
C documentation para wcstok