- •Операції з рядками Довідка з функцій. (Не для друку)
- •Визначення довжини рядків
- •Копіювання рядків
- •Функція strcpy
- •Функція strncpy
- •Функція strdup
- •Конкатенація рядків
- •Функція strсat
- •Функція strncat
- •Порівняння рядків
- •Функція strcmp
- •Функції stricmp, strcmpi
- •Функції CharToOem
- •Зміна порядку символів рядка На зворотній
- •Функції перевірки діапазону
- •Пошук символів
- •Функція strchr
- •Функція strrchr
- •Функція strspn
- •Функція strcspn
- •Функція strpbrk
- •Пошук подстрок
- •Функція strstr
- •Функція strtok
- •Функції перетворення типу
- •Перетворення рядка в число Функції atoi і atol
- •Функції _atoi64
- •Функції atof
- •Функції strtod
- •Перетворення числа в рядок Функції _itoa і _ltoa
- •Функція gcvt
Функція strrchr
Функція strrchr здійснює пошук заданого символу з кінця рядка. Вона має наступний синтаксис:
char* strrchr (const char* string, int c )
Дана функція повертає вказівник на останній символ у рядку string, що збігся із заданим символом с. Якщо символ не знайдений, вертається значення NULL.
Функція strspn
Функція strspn проводить порівняння символів одному рядка із символами іншої й повертає позицію (починаючи з нуля), у якій рядка перестають збігатися. Дана функція має наступний прототип:
size_t strspn ( const char* string, const char* group)
Функція перевіряє кожний символ рядка string на відповідність кожному із символів рядка group. У результаті роботи функції вертається число символів, що збіглися.
Наступний приклад демонструє використання даної функції:
char S1 [ ] = "Завантаження параметрів БД" ;
char S2 [ ] = "Завантаження параметррррр" ;
cout << strspn ( S1, S2 ) ;
На екран буде виведене число 17, тому що символи рядка S1 і рядка S2 збігаються аж до 177й позиції. Наведена функція розрізняє регістр символів.
Функція strcspn
Функція strcspn має синтаксис:
size_t strcpn ( const char* str1, const char* str2 )
Ця функція зіставляє символи рядка str1 і str2 і повертає довжину рядка str1, що не входить в str2. Таким чином, можна визначити, у якій позиції відбувається перетинання двох символьних масивів:
char S [ ] = "abcdefghijk" ;
int index = strcspn ( str, "elf" ) ;
Змінна index одержить значення 4, тому що в цій позиції рядка мають перший загальний елемент.
Функція strpbrk
Функція strpbrk оголошена в такий спосіб:
char* strpbrk ( const char* str1, const char* str2)
Ця функція відшукує місце входження в рядок str1 кожного із символів рядка str2. Якщо символи знайдені, вертається місце першого входження будь-якого символу з str2 у рядок str1. А якщо ні, то функція повертає NULL. Нижче ілюструється використання функції strpbrk:
char S1 [ ] = "abcdefghijk" ;
char S2 [ ] = "ecb" ;
char* ps ;
ps = strpbrk ( S1, S2 ) ;
cout << ps << '\n' ;
У результаті буде виведена подстрока "bcdefghijk", тому що символ 'b' з рядка S2 зустрічається в рядку S1 раніше інших.
Пошук подстрок
При необхідності пошуку в одному рядку послідовності символів, заданої в іншому символьному масиві (подстроке, лексемі), стандартна бібліотека string.h пропонує скористатися одного з наступних функцій.
Функція strstr
Функція strstr описана в такий спосіб:
char* strstr ( const char* str, const char* substr)
Дана функція здійснює сканування рядка str і знаходить місце першого входження подстроки substr у рядок str. У випадку успішного пошуку функція strstr повертає вказівник на перший символ рядка str, починаючи з якого випливає точний збіг частини str обов'язково з усією лексемою substr. Якщо подстрока substr не знайдена в str, вертається NULL.
Наступний приклад показує використання функції strstr.
char S1 [81] ; // оголошення рядка
Chartooem ( "Проводиться пошук елемента", S1 ) ; // ініціалізація рядка
char S2 [81] ; // оголошення рядка
Chartooem ( "пошук", S2) ; // ініціалізація рядка
char* ps ; // оголошення вказівника на рядок
ps = strstr ( S1, S2 ) ; // ініціалізація вказівника на рядок
cout << ps << '\n' ; // вивід на екран "пошук елемента"
На екран буде виведено "пошук елемента", тому що подстрока, що втримується в S2, перебуває усередині рядка S1 і функція strstr установить вказівник ps на відповідний елемент символьного масиву S1.
Щоб знайти місце останнього входження подстроки в рядок, можна скористатися наступним прийманням: обидві рядки реверсируются за допомогою функції strrev, а потім отриманий результат аналізується у функції strstr.