836 Глава 14

функция	синтаксис / описание	файл
strset	char *strset(char *s, int ch)Заполняет строку s символом ch	string.h
strspn	sizet strspn(const char *sl, const char *s2)Возвращает число первых символов строки si, входящих в множество символов строки s2 (последовательность символов безразлична)	string.h
strstr	char *strstr(const char *sl, const char *s2)Возвращает первое вхождение подстроки s2 в строку si или NULL	string.h
strtok	char *strtok(char *sl, const char *s2)Ищет первое вхождение разделителей из строки s2 в строке si и усекает строку si; возможны повторные вызовы	string.h
StrUpper	char * StrUpper(char * Str)Возвращает строку, все символы которой приведены к верхнему регистру (для кириллицы надо использовать Ansi StrUpper);	SysUtils.hpp
strupr	char *strupr(char *s)Преобразует строку s в верхний регистр (только латинские буквы)	string.h

Комментарии

Функции файла string.h, распознающие регистр символов (strcmpi, stricmp,
strlwr, strncmpi, strnicmp, strupr), не позволяют оперировать с символами кирил-
лицы, записанными в разных регистрах. Для подобной работы с русскими текстами
надо использовать аналогичные функции файла SysUtils.hpp. Функции этого файла
могут работать с текстами на русском языке и с многобайтными символами.

Операции, выполняемые большинством функций, вероятно, понятны из пояс-
нений в таблице. Поэтому остановимся только на некоторых из них.

Функции strtok работает следующим образом. При своем первом вызове для
данной строки si функция ищет первое появление в строке одного из символов, со-
держащихся в строке s2. Если такой символ найден, то он заменяется на нулевой
символ, т.е. строка si усекается на этом символе. Функция возвращает указатель
на первый символ усеченной строки si. Далее можно повторно вызывать функцию
strtok, задавая ей в качестве первого параметра NULL. Функция продолжит обра-
ботку той же строки si (строку s2 при этом можно сменить), найдет вхождение
следующего символа из s2, опять заменит его нулевым символом и вернет указа-
тель на начало нового просмотренного фрагмента строки. Таким образом, получа-
ется чтение строки по фрагментам. Приведем пример. Операторы

char s [80], *р;

р = strtok(s, " ,.") ;

if (p) Memol->Lines->Add(p);

while(p)
(

p = strtok(NULL, " ,.;");

if (p) Memol->Lines->Add(p) ;

}

осуществляют поиск в строке s символов — разделителей: пробела, запятой, точ-
ки. Обработанные фрагменты строки заносятся в строки окна Memol. Например,