Прототип функции 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; }
Пример работы программы
Особенности
национальной
рыбалки
художественный
комедийный
фильм
Комментарии