- •Лекция 5.
- •6. Строки
- •6.1 Символьный тип char
- •Упражнения
- •6.3 Строки, управление вводом/выводом и операции над строками
- •6.3.1 Форматированный потоковый вывод
- •6.3.2 Функции, объявленные в библиотеке string.H
- •Присвоение значений строкам
- •Инициализация строки
- •Функция strcpy
- •Функция strdup
- •Функция strncpy
- •Определение длины строки
- •Функция strlen
- •Конкатенация строк
- •Функция strcat
- •Функция strncat
- •Сравнение строк
- •Функция strcmp
- •Функция stricmp
- •Функция strncmp
- •Функция strnicmp
- •Функция strrchr
- •Функция strspn
- •Функция strcspn
- •Функция strpbrk
- •Поиск строк
- •Функция strstr
- •Функция strtok
Функция strtok
Библиотека функций для работы со строками имеет функцию strtok, которая дает возможность разбить строку на подстроки на основании заданного набора символов-ограничителей (подстроки иногда называются лексемами).
Прототип функции strtok:
char* strtok(char *target, const char * delimiters);
Функция разбивает строку на лексемы, согласно символам-ограничителям, заданным в параметре delimeters.
В следующем примере показано, как работать с этой функцией и как получать лексемы, на которые была разбита строка. Функция strtok вводит символ '\0' (символ конца строки) после каждой лексемы.
Пример:
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char *str = "+*() BASE_COST";
const char *tkn = "+*() ";
char *ptr=str;
cout<<str<<endl;
ptr=strtok(str,tkn); // первый вызов функции strtok
cout << " Лексемы этой строки: " << ptr << " ";
do
{
ptr=strtok(0,tkn);
if (ptr)
cout<<ptr<<" ";
} while(ptr);
cout<<endl;
return 0;
}
В результате выполнения этой программы на экран будет выведена строка:
+*() BASE_COST
Лексемы этой строки: BASE_COST.