Регистрация
10 Дек 2013
Сообщения
92
Репутация
9
Спасибо
1
Монет
0
Функции для работы со строками

Функции для работы со строками сожердатся в библиотеке string.lib (подключение: #include string.h).

Наиболее часто применяются следующие функции:

char *strcpy(st1, st2) – копирует содержимое строки st2, включая нулевой символ, в строку st1.

char *strcat(st1, st2) – добавляет справа к строке st1 содержимое строки st2.

int strcmp(st1, st2) – сравнивает содержимое строк st2 и st1. Если st1 < st2, то результат равен –1, если st1 = st2 – результат равен нулю, если st1 > st2 – результат равен 1.

char *strstr(st1, st2) – возвращает указатель на первое появление подстроки st2 в строке st1.

char *strchr(st, sh) – возвращает указатель на первое появление символа ch в строке st.

char *strtok(st1, st2) – возвращает указатель на лексему, находящуюся в строке st1. При первом вызове функция возвращает указатель на первый символ в st1, а после первой лексемы устанавливает нулевой символ. При последующих вызовах функции со значением NULL в качестве первого аргумента указатель аналогичным образом переходит к следующим лексемам. После того как закончились все лексемы, указатель устанавливается в NULL.

int strlen(st) – возвращает длину строки st.

char *strrev(st) – изменяет порядок следования символов в строке на противоположный.

сhar *strdup(st); – дублирует строку st.

сhar *strlwr(st) – конвертирует символы строки st к нижнему регистру.

сhar *strupr(st) – конвертирует символы строки st к верхнему регистру.

int atoi(st) – преобразует строку st в число целого типа (int).

double atof(st) – преобразует строку st в число действительного типа.

char *itoa(a, st, base) – преобразует число целого типа a в строку st (base – основание системы счисления).

char *gcvt(a, dec, st); – преобразует число действительного типа a в строку st. Значение dec указывает на число десятичных разрядов (не более 18).



287745634_0a3706cee74f6a44e8da988d27166ac0_800.png

 
Эти функции предназначены для работы со строками в языке программирования C++. Вот описание каждой из них:

std::strcpy - копирует содержимое строки st2, включая нулевой символ, в строку st1.

std::strcat - добавляет справа к строке st1 содержимое строки st2.

std::strcmp - сравнивает содержимое строк st2 и st1. Если st1 < st2, то результат равен –1, если st1 = st2 – результат равен нулю, если st1 > st2 – результат равен 1.

std::strstr - возвращает указатель на первое появление подстроки st2 в строке st1.

std::strchr - возвращает указатель на первое появление символа ch в строке st.

std::strtok - возвращает указатель на лексему, находящуюся в строке st1. При первом вызове функция возвращает указатель на первый символ в st1, а после первой лексемы устанавливает нулевой символ. При последующих вызовах функции со значением NULL в качестве первого аргумента указатель аналогичным образом переходит к следующим лексемам. После того как закончились все лексемы, указатель устанавливается в NULL.

std::strlen - возвращает длину строки st.

std::strrev - изменяет порядок следования символов в строке на противоположный.

std::strdup - дублирует строку st.

std::strlwr - конвертирует символы строки st к нижнему регистру.

std::strupr - конвертирует символы строки st к верхнему регистру.

std::stoi - преобразует строку st в число целого типа (int).

std::stod - преобразует строку st в число действительного типа.

std::to_string - преобразует число a в строку st (base – основание системы счисления).

std::to_chars - преобразует число a в строку st (base – основание системы счисления).

std::atof - преобразует строку st в число действительного типа.

std::itoa - не является стандартной функцией в C++, но может быть доступна в ряде компиляторов и библиотек. Она преобразует число целого типа a в строку
 
Кроме перечисленных функций в библиотеке string.h также есть и другие полезные функции:

- strchrnul(st, ch) – возвращает указатель на первое вхождение символа ch в строку st. Если символ не найден, то возвращается указатель на нулевой символ в конце строки (то же самое, что и strchr, но без проверки на NULL).
- strpbrk(st1, st2) – возвращает указатель на первое вхождение в строке st1 любого символа из строки st2. Если символы не найдены, возвращается NULL.
- strspn(st1, st2) – возвращает количество символов в начале строки st1, которые присутствуют также и в строке st2.
- strcspn(st1, st2) – возвращает количество символов в начале строки st1, которые НЕ присутствуют в строке st2.
- strtok_r(st1, st2, ptr) – функция strtok, но с использованием указателя на сохранение текущего положения (в переменной ptr).
- strncmp(st1, st2, n) – сравнивает n символов из строк st1 и st2. Результат аналогичен функции strcmp.

И многие другие. Все они предназначены для работы со строками и могут значительно упростить написание кода, связанного с обработкой текстовых данных.
 
В Си++ для работы со строками предназначен класс string, для работы с которым необходимо написать #include А функции из string.h - это функции для работы со строками из чистого Си. В программах на Си++ их можно также подключить, используя #include Теперь о том, что вам там написали про то, что якобы "Наиболее часто применяются следующие функции". Так вот, реально из всего перечисленного наиболее полезны будут следующие функции: strlen
strcmp
strncmp
strdup Менее часто нужны strchr
strstr ⚠⚠⚠⚠⚠⚠⚠⚠
НИ В КОЕМ СЛУЧАЕ не должны использоваться такие функции, как strcpy и strcat так как они не проверяют факт переполнения буфера. Вместо этого используйте функцию snprintf
⚠⚠⚠⚠⚠⚠⚠⚠

Все остальные функции из тех, что вам перечислили, лучше заменить на другие. В частности, на практике очень часто возникает задача по преобразованию строки в число и ее лучше решать при помощи семейства функций strtol из stdlib.h
 
Назад
Сверху