Строковые функции в C++: strtok
Функция strtok в языке программирования C используется для разделения строки на отдельные токены с помощью указанного разделителя. Разделительом может быть любой символ или набор символов.
Прежде чем привести примеры кода, рассмотрим синтаксис функции strtok:
char *strtok(char *str, const char *delim);
Первым параметром функции strtok является указатель на строку, которую мы хотим разделить. Вторым параметром является указатель на строку-разделитель. Функция strtok возвращает указатель на следующий токен в строке или NULL, если больше нет токенов.
Рассмотрим примеры использования функции strtok:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "Hello, world! Welcome to strtok!";
const char delim[] = " ,!";
char *token = strtok(str, delim);
while (token != NULL) {
printf("Токен: %s\n", token);
token = strtok(NULL, delim);
}
return 0;
}
В данном примере у нас есть строка "Hello, world! Welcome to strtok!", которую мы хотим разделить на отдельные слова. В качестве разделителей мы выбрали пробел, запятую и восклицательный знак.
Функция strtok сначала вызывается с указателем на исходную строку и разделителями. Она возвращает указатель на первый токен - "Hello". Далее мы используем цикл while для продолжения разделения строки на остальные токены. В каждом шаге цикла мы печатаем текущий токен и вызываем функцию strtok с NULL в качестве первого параметра для продолжения разделения.
Результат работы программы будет следующим:
Токен: Hello Токен: world Токен: Welcome Токен: to Токен: strtok
Мы получаем все отдельные слова из исходной строки.
Однако, следует учитывать, что функция strtok может изменять исходную строку, заменяя разделители на символы конца строки ('\0'). Если вам необходимо сохранить исходную строку, можно использовать ее копию или создать временную переменную.
Вот еще один пример, демонстрирующий использование функции strtok для разделения строки на числа:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "10,20,30,40,50";
const char delim[] = ",";
char *token = strtok(str, delim);
while (token != NULL) {
int num = atoi(token); // Преобразование токена в числовое значение
printf("Число: %d\n", num);
token = strtok(NULL, delim);
}
return 0;
}
В данном примере у нас есть строка "10,20,30,40,50", которую мы хотим разделить на отдельные числа. В качестве разделителя мы выбрали запятую. Затем, каждый токен (число в виде строки) преобразуется в числовое значение с помощью функции atoi, а затем выводится на экран.
Результат работы программы будет следующим:
Число: 10 Число: 20 Число: 30 Число: 40 Число: 50
Мы получаем все числа из исходной строки.
Функция strtok является полезным инструментом для разделения строк на отдельные токены, и она может использоваться во многих задачах, где требуется обработка и анализ текстовых данных. Однако, следует быть внимательными при работе с функцией strtok, чтобы избежать ошибок и непредвиденного изменения исходной строки.