Прототип функции strtok:
char * strtok( char * string, const char * delim );
Заголовочный файл:
| Название | Язык |
|---|---|
| string.h | С |
| cstring | С++ |
Описание
Функция strtok выполняет поиск лексем в строке string. Последовательность вызовов этой функции разбивают строку string на лексемы, которые представляют собой последовательности символов, разделенных символами разделителями.
На первый вызов, функция принимает строку string в качестве аргумента, чей первый символ используется в качестве начальной точки для поиска лексем. В последующие вызовы, функция ожидает нулевого указателя и использует позицию сразу после окончания последней лексемы как новое местонахождение для сканирования.
Для определения начала лексемы функция сначала определяет символы, не содержащиеся в строке delim, то есть они являются символами разделителями. А затем посимвольно проверяет остальную часть строки до первого символа-разделителя, который сигнализирует конец лексемы.
Этот конечный маркер автоматически заменяется нулевым символом, и лексема возвращается функцией. После этого, следующие вызовы функции strtok начинаются с этого нулевого символа.
Параметры:
- string
Строка для поиска в ней лексем. Содержание этой строки будет изменено, она разбивается на более мелкие строки (лексемы). Данный параметр может содержать нулевой указатель, в этом случае функция продолжает сканирование с того места, где был остановлен предыдущий успешный вызов функции. - delim
Строка, содержащая разделители. Они могут варьироваться от одного вызова к другому вызову функции.
Возвращаемое значение
Указатель на последнюю найденную лексему в строке.
Возвращается пустой указатель, если нет найденных лексем.
Пример: исходный код программы
//пример использования функции strtok
#include <iostream>
#include <cstring>
int main ()
{
char str[] = "Особенности национальной рыбалки - художественный, комедийный фильм.";
std::cout << "Разделение строки "" << str << "" на лексемы:n";
char * pch = strtok (str," ,.-"); // во втором параметре указаны разделитель (пробел, запятая, точка, тире)
while (pch != NULL) // пока есть лексемы
{
std::cout << pch << "n";
pch = strtok (NULL, " ,.-");
}
return 0;
}
Пример работы программы
Особенности
национальной
рыбалки
художественный
комедийный
фильм
Комментарии