Sdílet prostřednictvím


strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, , _mbstok_s_mbstok_s_l

Vyhledá další token v řetězci pomocí aktuálního národního prostředí nebo pomocí předaného národního prostředí. Tyto verze , , _strtok_lwcstok, _wcstok_l, _mbstokmají _mbstok_lvylepšení zabezpečení, jak je popsáno v funkcích zabezpečení v CRT.strtok

Důležité

_mbstok_sa _mbstok_s_l nelze je použít v aplikacích, které se spouští v prostředí Windows Runtime. Další informace najdete v tématu Funkce CRT, které nejsou v aplikacích Univerzální platforma Windows podporované.

Syntaxe

char* strtok_s(
   char* str,
   const char* delimiters,
   char** context
);

char* _strtok_s_l(
   char* str,
   const char* delimiters,
   char** context,
   _locale_t locale
);

wchar_t* wcstok_s(
   wchar_t* str,
   const wchar_t* delimiters,
   wchar_t** context
);

wchar_t *_wcstok_s_l(
   wchar_t* str,
   const wchar_t* delimiters,
   wchar_t** context,
   _locale_t locale
);

unsigned char* _mbstok_s(
   unsigned char* str,
   const unsigned char* delimiters,
   char** context
);

unsigned char* _mbstok_s_l(
   unsigned char* str,
   const unsigned char* delimiters,
   char** context,
   _locale_t locale
);

Parametry

str
Řetězec obsahující token nebo tokeny, které chcete najít.

delimiters
Sada znaků oddělovače, které se mají použít.

context
Slouží k ukládání informací o poloze mezi voláními funkce.

locale
Národní prostředí, které se má použít

Vrácená hodnota

Vrátí ukazatel na další token nalezený v str. Vrátí, NULL když se nenašly žádné další tokeny. Každé volání upraví str nahrazením znaku null pro první oddělovač, který nastane po vrácený token.

Chybové podmínky

str delimiters context Vrácená hodnota errno
NULL jakékoliv ukazatel na ukazatel s hodnotou null NULL EINVAL
jakékoliv NULL jakékoliv NULL EINVAL
jakékoliv jakékoliv NULL NULL EINVAL

Pokud str je NULL ukazatel context na platný kontextový ukazatel, neexistuje žádná chyba.

Poznámky

Řada strtok_s funkcí najde další token v strsouboru . Sada znaků určuje delimiters možné oddělovače tokenu, které se mají najít v str aktuálním volání. wcstok_sa _mbstok_s jsou širokoznakové a vícebajtové verze .strtok_s Argumenty a návratové wcstok_s _wcstok_s_l hodnoty a jsou řetězce širokého znaku. Argumenty a návratové _mbstok_s _mbstok_s_l hodnoty a jsou řetězce s vícebajtovými znaky. Tyto funkce se chovají stejně jinak.

Tato funkce ověří své parametry. Pokud dojde k chybovému stavu, jako v tabulce Chybové podmínky, je vyvolána neplatná obslužná rutina parametru, jak je popsáno v ověření parametru. Pokud provádění může pokračovat, tyto funkce jsou nastaveny errno na EINVAL a vracet NULL.

Při prvním volání strtok_sfunkce přeskočí počáteční oddělovače a vrátí ukazatel na první token v str, ukončuje token znakem null. Více tokenů lze rozdělit ze zbytku str řady volání strtok_s. Každé volání strtok_s modifikuje str vložením znaku null za token vrácený tímto voláním. Ukazatel context sleduje, který řetězec se čte a kde v řetězci se má další token číst. Pokud chcete přečíst další token z str, volání strtok_s s NULL hodnotou argumentu str a předání stejného context parametru. Argument NULL str způsobí strtok_s vyhledání dalšího tokenu v změněné str. Argument delimiters může převzít libovolnou hodnotu z jednoho volání na další, aby se sada oddělovačů mohla lišit.

Vzhledem k tomu, že context parametr nahrazuje statické vyrovnávací paměti použité ve strtok stejném vlákně, _strtok_lje možné parsovat dva řetězce současně ve stejném vlákně.

Výstupní hodnota je ovlivněna nastavením LC_CTYPE nastavení kategorie národního prostředí. Další informace najdete na webu setlocale.

Verze těchto funkcí bez přípony _l používají pro toto chování závislé na národním prostředí aktuální národní prostředí. Verze s příponou _l jsou shodné s tím rozdílem, že místo toho používají národní prostředí určené parametrem locale . Další informace naleznete v tématu Národní prostředí.

Ve výchozím nastavení je globální stav této funkce vymezen na aplikaci. Chcete-li toto chování změnit, přečtěte si téma Globální stav v CRT.

Mapování rutin obecného textu

TCHAR.H rutina _UNICODE a _MBCS není definován _MBCS definovaný _UNICODE definovaný
_tcstok_s strtok_s _mbstok_s wcstok_s
_tcstok_s_l _strtok_s_l _mbstok_s_l _wcstok_s_l

Požadavky

Rutina Požadovaný hlavičkový soubor
strtok_s <string.h>
_strtok_s_l <string.h>
wcstok_s,
_wcstok_s_l
<string.h> nebo <wchar.h>
_mbstok_s,
_mbstok_s_l
<mbstring.h>

Další informace o kompatibilitě najdete v tématu Kompatibilita.

Příklad

// crt_strtok_s.c
// In this program, a loop uses strtok_s
// to print all the tokens (separated by commas
// or blanks) in two strings at the same time.

#include <string.h>
#include <stdio.h>

char string1[] =
    "A string\tof ,,tokens\nand some  more tokens";
char string2[] =
    "Another string\n\tparsed at the same time.";
char seps[]   = " ,\t\n";
char *token1 = NULL;
char *token2 = NULL;
char *next_token1 = NULL;
char *next_token2 = NULL;

int main(void)
{
    printf("Tokens:\n");

    // Establish string and get the first token:
    token1 = strtok_s(string1, seps, &next_token1);
    token2 = strtok_s(string2, seps, &next_token2);

    // While there are tokens in "string1" or "string2"
    while ((token1 != NULL) || (token2 != NULL))
    {
        // Get next token:
        if (token1 != NULL)
        {
            printf(" %s\n", token1);
            token1 = strtok_s(NULL, seps, &next_token1);
        }
        if (token2 != NULL)
        {
            printf("        %s\n", token2);
            token2 = strtok_s(NULL, seps, &next_token2);
        }
    }
}
Tokens:
A
        Another
string
        string
of
        parsed
tokens
        at
and
        the
some
        same
more
        time.
tokens

Viz také

Manipulace s řetězci
Národní prostředí
Interpretace vícebajtových sekvencí znaků
strcspn, wcscspn, , _mbscspn_mbscspn_l
strspn, wcsspn, , _mbsspn_mbsspn_l