Функция strtok

Прототип функции 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;
}

Пример работы программы

CppStudio.com
Разделение строки «Особенности национальной рыбалки — художественный, комедийный фильм.» на лексемы:
Особенности
национальной
рыбалки
художественный
комедийный
фильм
Автор: admin
Дата: 31.08.2012
Поделиться:

Комментарии

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.