Namespaces
Variants
Actions

std::strtok

From cppreference.com
< cpp‎ | string‎ | byte
 
 
 
 
Defined in header <cstring>
char* strtok( char* str, const char* delim );

Tokenizes a null-terminated byte string.

A sequence of calls to std::strtok breaks the string pointed to by str into a sequence of tokens, each of which is delimited by a character from the string pointed to by delim. Each call in the sequence has a search target :

  • If str is non-null, the call is the first call in the sequence. The search target is null-terminated byte string pointed to by str.
  • If str is null, the call is one of the subsequent calls in the sequence. The search target is determined by the previous call in the sequence.

Each call in the sequence searches the search target for the first character that is not contained in the separator string pointed to by delim, the separator string can be different from call to call.

  • If no such character is found, then there are no tokens in the search target. The search target for the next call in the sequence is unchanged.[1]
  • If such a character is found, it is the start of the current token. std::strtok then searches from there for the first character that is contained in the separator string.
    • If no such character is found, the current token extends to the end of search target. The search target for the next call in the sequence is an empty string.[2]
    • If such a character is found, it is overwritten by a null character, which terminates the current token. The search target for the next call in the sequence starts from the following character.

If str or delim is not a pointer to a null-terminated byte string, the behavior is undefined.

  1. A token may still be formed in a subsequent call with a different separator string.
  2. No more tokens can be formed in subsequent calls.

Contents